Original von Borg
Ich würde aber nicht die Liste kopieren und einzelne Elemente löschen, sondern einfach nur die Elemente mischen.
danke. sehr schöne und so gesehen elegante lösung. =)
Original von BAUHAUS
@Sheitman & Dexter:
Ja das kannte ich schon, aber des zeigt ja nur wie man eine Varible zugreifbar macht und nicht eine Funktion so wie ich es machen will.
deiner Antwort entnehme ich mal das du dir nicht den beitrag hier angeschaut hast. da geht es nicht darum auf eine variable zuzugreifen, sondern wie die 3 schichten aufgebaut sein könnten und wie sie dann zusammen kommunizieren...
ich hab mal was gebastelt
private void btnRandomize_Click(object sender, EventArgs e) {
int size = lstNamen.Items.Count;
List<String> liste = new List<string>(lstNamen.Items.Count);
foreach (String s in lstNamen.Items) {
liste.Add(s);
}
Random r = new Random();
lstRandomized.Items.Clear();
for (int i = 0; i < size; i++) {
int index = r.Next(liste.Count);
lstRandomized.Items.Add(liste[index]);
liste.RemoveAt(index);
}
}
ich hab die namen nochmal zwischengespeichert, damit meine ursprüngliche liste nicht verloren geht
durch
r.Next(liste.Count)
begrenze ich den maximalwert des indexes auf die aktuelle länge von liste
das item kommt dann in meine zweite listbox und wird aus der ersten entfernt, wodurch diese um 1 kürzer wird
auf dein problem bezogen müßte dein code so aussehen
Random r = new Random();
for(int i=0;i<array.Count;i++) {
int index = r.Next(listname.Items.Count);
listausgabe.Items.Add(listname[index]);
listname.Items.RemoveAt(index);
}
allerdings mußt du noch beachten, das der fall eintreten kann (und sicherlich auch wird), dass 2x der gleiceh name hinzugefügt wird
momentan merkst du dir nämlich nicht, welche namen schon hinzugefügt sind
bzw. du behandelst diese situation nicht
schau mal hier rein
Erkenntnis MVC? neuer Ansatz?
hab mal was rudimentäres gebaut
so, oder so ähnlich, könnte man das anwenden
mußt das ganze natürlich noch auf deine konkrete anwendung anpassen
wichtig ist nur folgendes:
alle berechnungen gehören nach backgroundWorker1_DoWork
alle änderungen an controls (text, farbe etc.) gehört nach backgroundWorker1_ProgressChanged
dem kannst du auch ein eigenes object mitgeben, das köntne dann z.b. den text für die statusleiste enthalten oder eigenen typen mit noch mehr infos =)
namespace WindowsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) {
BackgroundWorker worker = (BackgroundWorker)sender;
worker.ReportProgress(0);
Thread.Sleep(800);
for (int i = 1; i <= 100; i++) {
Thread.Sleep(100);
worker.ReportProgress(i);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e) {
int p = e.ProgressPercentage;
switch(p) {
case 0:
Cursor = Cursors.WaitCursor;
lblStatus.Text = "Lade Projekt";
break;
case 1:
lblStatus.Text = "Rechne1...";
break;
case 30:
lblStatus.Text = "Rechne2...";
break;
case 70:
lblStatus.Text = "Rechne3...";
break;
case 100:
lblStatus.Text = "Laden fertig.";
Cursor = Cursors.Default;
break;
}
progressBar1.Value = e.ProgressPercentage;
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
}
private void button1_Click(object sender, EventArgs e) {
backgroundWorker1.RunWorkerAsync();
}
}
hm mal schaun
also das eine setzeStatusleiste() aus machWas() kannst du ja in ladeProjekt() nach machWas() verschieben
dann würde ich dein machWas() in einem thread abarbeiten
was macht denn das setzeStatusleiste() in den einzelnen rechneX()?
die aufrufe solltest du jedenfalls per invoke an die controls weitergeben... weiß ja nun auch nicht wie du deine methoden aus klassensicht aufgeteilt hast...
ja, so hab ichs auch verstanden. wobei ich bei dem timeout mir nicht sicher bin.
dein ansatz mit dem thread ist also richtig 😉
vielleicht solltest du eher überlegen warum das nicht gezeichnet wird und dann entsprechende gegenmaßnahmen ergreifen...
ich nehme mal an das du dein projekt im ui-thread lädst, und der dadurch blockiert wird...
lager das laden deines projektes in einen thread aus, das sollte helfen.
Hm, ist denn die 2. Form bei dir nicht bedienbar?
Normalerweise würde ic hdavon ausgehen sie ist es denn du hast ja deine langen Operationen schon in einen seperaten Thread ausgelagert.
Wenn du nun das 2. Form aus dem Hauptthread (dem GUI THread) aufrufst, dann läuft der ja auch mit in dem drin. Von daher sollte die also auch nciht blockieren.
@stube
du könntest versuchen alle click-events über eine methode zu behandeln...
d.h. du bindest alle buttons mit den rechenzeichen an nur eine click-methode und mußt dort vorher auswerten was denn nun für eine operation gewünscht war
vielleicht kannst du nem button ja so ne information mitgeben 🙂
zum Partial : Das wird bei mir automatisch generiert, wenn ich eine neue Web-anwendung erstellen lasse ! Ist das irgendswie schlimm,oder verlangsament ?
ich glaub es ging eher darum was denn partial bedeutet
@lordhessia
heißt das nun die haben den perl5compiler in java nachgebaut oder rufen die wirklich perl auf das den ausdruck dann auswertet?
da müßte ja heißen das dem framework ein kleines perl beiligt o.O
abgesehen davondas zu runtime dann noch perl ausgeführt wird o.O
p.s.
sorry für ot
Zur Unterscheidung gibt es doch die verschiedenartigen Symbole vor den Namen.
ja sicherlich
aber wenn du nicht genau weißt wie das event heißt, bedeutet das ja ich muß durch die ganze liste scrollen wo methoden, properties und events zusammen gewürfelt sind
dsa kann schon mal sehr lang werden
viel schneller würde das ja gehen wenn man nur durch die liste der events scrollen könnte
zudem fällt mir immer mehr auf das die doku rel. schlecht zu habdhaben ist
ich hab vorher java gemacht und da hatte ma nz.b. auch eine übersicht welche methoden aus den oberklassen geerbt wurden
hier sieht man das nicht... z.b. hab ich in der textbox nach dem event gesucht was in textboxbase definiert war... rein von der doku hät ich das nicht mitbekommen
nur intelisense verwies halt auf die klasse
find ich net so toll 😕
java-api-docu imho übersichtlicher
Original von Lord Hessia
Die Idee mit Perl dinde ich einen interessanten Ansatz. Aber wird zur Auswertung von regulären Ausdrücken in C# nicht sowieso Perl verwendet? Also in Java ist das zumindest so... willst du damit sagen das java dann einen perl-interpreter startet um die ausdrücke auszuwerten?
sorry aber sowas kann ich nicht glauben
die regulären ausdrücke in java haben afaik nur die perlsyntax übernommen + paar eigne sachen
vielleicht verwechselst du da was
Original von plucked
IntelliSense wär auch ein wenig unübersichtlich wenn dort alle auf dem Computer in C# benutzbaren Klassen aus allen Libraries aufgelistet wären. 🙂
nun ja wenn du alle klassen einbindest dann würde das sogar passieren^^
ich find aber das intellisense sowieso arg unübersichtlich da z.b. event mit properties und methoden vermischt sind
wenn man etwas sucht aber nicht genau weiß wie es heißt, sucht man sich bald nen wolf 🙁
gibts da ein addin was das bissl "aufräumt"?
Original von Jules
Das SourceGrid2 ist toal super, kann ich aber leider nicht benutzen, weil man das wohl nur für Open Source Software benutzen darf.
wo steht das?
ich hab keinerlei solch einschränkung gesehen
Es gibt eine Klasse Registry bzw. RegistryKey.
Schau dir da mal die Beispiele dazu an wie man die benutzt, ist relativ simpel.
Du könntest dann schaun ob unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0\Word\InstallRoot
ein Key namens Path existiert und nen Wert hat.
Da steht drin wohin dein Word installiert wurde.
Wenn das fehlt wirds vermutlich nicht drauf sein.
Wenn du nur prüfen möchtest ob irgendein Word installiert ist müßtest du das bissl anders machen... aber dawolltest du ja nicht. 🙂
Original von Xqgene
Hi,schon was von
> gehört? 😉guckt dort mal speziell das <configuration> Element und dann "Runtime Settings Schema"
ah, danke 🙂
wie macht man das dann wenn man kein config file benutzen kann?
z.b. wenn ich ein com-addin für word habe (nur ne dll halt)
ich muß sagen das ich variablen auch gerne mit typinformationen "schmücke"
intellisense schön und gut aber auf einen ausdruck nutzt einem das wenig bzw. in einem editor der das nicht hat 😉
zudem hab ich meist das problem passende namen für objekte zu finden, da kommt dann schon gern mal ein o davor^^
oItem, oCommandBar etc.
Original von absalom
An sich eine gute Idee, aber web.de verlangt für die IMAP Unterstützung Geld.Trotzdem vielen Dank für die Vorschläge
absalom
kann ich mir garnicht vorstellen
wo genau steht das?
hab unter https://www3.hilfe.freemail.web.de/freemail/e-mail/imap/allgemeines/ da jetzt auch nix finden können
probier doch mal aus ob du mit outlook express drauf kommst über imap
kannst du mir des rätsels lösung per pm schicken? würde mich nun doch schon interesseiren wie die das verschlüsselt haben 🙂
mußt mal nach nem komerziellen gridcontrol schaun...
z.b. sandgrid von http://www.divil.co.uk/net/ hatte afaik ein screenshot da hat man excel mit nachempfunden
hm, würde mich auch interessieren 🙂
frage is ja dan nauch wie sagst du der exe sie möge bitte in dem verzeichnis lib nach den assemblies suchen o.O
ich verwende auch dein _
wobei ich überlege mir die geschichten mit m_ p_ etc. noch mal anzuschauen weil ma nda nochmal ne gute trennung von parametern und membern z.b. hat
private string name;
public string Name {
get { return name; }
}
find ich unschön
geht zwar aber das kann schon mal verwirren bzw. auch mal fix zu verwechslungen führen (tippfehler, intellisense) oder man kommt durcheinander...
wer fxcop einsetzt wird glaub da auch seine freude mit haben^^
letzen endes muß man eh sehen was die firma bzw. die andere nmitarbeiter vorgeben
und für einen persönlich soltle man das wählen womit man ohne probleme am besten zurecht kommt
alternativ könntest du auch imap benutzen
@lohokla
ja sicherlich liegt das irgendwie daran
aber das steckt alles in der dll eines drittanbieters...
da kann er das nicht mal eben ändern...
darum sollee er den hersteller kontaktieren
eventuell eine inkompatibilität mit dem cardreader? wer weiß das schon...
ich weiß solche antworten können nerven aber benutz bitte mal die suchfunktion vom forum.
ein stichwort wäre httprequest.
dazu gabs schon ne menge themen.
wenn es wirklich codiert ist dann kann man dir nur schwer helfen ohne die dll bzw. den dort enthaltenen algorithmus zu kennen
ist die dll in c# bzw. einer anderen managed sprache geschrieben?
dann könntest du ja mal schaun ob du die dll mit reflector öffnen kannst um einen kleinen blick auf den quellcode zu werfen
Original von Lector
OK das Beispiel von vorhin geht auf allerdings gibts immer noch Ungenauigkeiten...
wo eigendlich 0.0 rauskommen sollte und mit der alten Formel auch rausgekommen ist kommt jetzt 0,0217706821 raus......
wo würde denn 0 raus kommen?
gut möglich das dein ergebnis auf die integererdivision zurück zu führen ist
wenn man gleitkommazahlen verwendet hat man immer einegewisse ungenauigkeit drin, da sich nicht alle zahlen als gleitkommazahl exakt darstellen lassen
also wenn ich das so hier mache
double height = 200;
double lHeight = 15;
double lTop = 108;
double width = 200;
double lWidth = 17;
double sin, cos;
sin = -(height / 2 - lHeight / 2 - lTop);
sin /= (height / 2 - lWidth / 2);
komm ich auch auf dein genaues ergebnis
von daher einfach mal alles in ein double casten
int i = 1;
double d = (double)i;
Hallo,
naja ich bezweifel, das man alleine in 2 Wochen ein Prog. schreiben kann, was eine Firma wirklich gebrauchen kann.
Denn die Anforderungen, die eine Firma (nicht nur ein Mitarbeiter) an eine Software stellen, sind meistens enorm, und in so kurzer Zeit eigentlich nicht zu realisieren. kommt halt drauf an wie umfangreich die software ist
keiner erwartet das du ein 2. office programmierst... meist sind es ja db-anwendungen um irgendwas zu verwalten und da kommt dann halt sowas mit rein welche db du auswählst und warum etc.
aber vor der frage "brauchen die leute sowas wirklich" stehe ich auch gerade
Wie gesagt, es muss etwas sein, was eine Firma potentiell gebrauchen kann, dann kann meine Firma das gebrauchen. Man muss der IHK nur plausibel machen können, dass die Firma es braucht. Wenn ich sage, dass das meine Idee für ein Projekt ist, dann sagt die, dass sie das auch gerade rein zufällig dringend braucht und auch bereits ein Kundenwunsch dazu geäußert wurde...
Ihr versteht denke ich, was ich damit meine.
das entspricht ja dann das pferd von hinten aufzäumen...bei was für einer firma bist du denn und was warn so die tätigkeiten dort?
Ok also prüf mal ob du die System.dll und die System.Data.dll eingebunden hast.
Vom Compact Framework wird ja anscheinden nur die MSCORLIB eingebunden.
Wenn die alle drin sind und du immernoch Fehlermeldungen hast dann schauen wir mal weiter.
Eigentlich ist die Fehlermeldung ja recht aussagekräftig...
Kann es sein das du Visual Studio 2003 verwendest bzw. das .NET Framework 1.1?
Wenn ja dann schau mal nach ob es noch einen Connector unter ..\bin.NET 1.1\ oder so gibt, denn du wolltest den für .NET 2.0 verwenden
Und diese Referenziert eine System.dll der Version 2.0 bzw. eine System.Data 2.0 (siehe Fehlermeldung)
Daher kam der Fehler.
Eventuell mal auf der MySQL Homepage nach einer Version für .NET 1.1 schaun falls du sie in dem herunter geladenen Archiv nicht findest.
Nachtrag: Ok ich sehe grad anscheinden benutzt du doch das Visual Studio 2005.
Dann prüfe mal ob die System.dll und die System.Data.dll unter Referenzen eingetragen ist.
Unter http://dev.mysql.com/downloads/connector/net/1.0.html gibts akutelle Version vom Connector (falls du nicht schon hast).
wozu machst du überhaupt diese umwandlung?
normalerweise stellt man nicht die zeichen dar (denn da können z.b. auch steuerungszeichen drin sein) sondern die hexwerte der einzelnen bytes
alles andere kann letzlich zu konvertierungsproblemen führen
encoding.default ruft ja den zeichensatz ab der für dein momentanes windows eingestellt ist... das kann auch wieder zu problemen führen da die nicht überall gleich sind
@quallo
ja aber diese frage kann dir doch dein betrieb am ehesten beantworten
geh einfach mal zum chef und frag ihn ob irgendwelche tools neu erstellt, konvertiert oder angepaßt werden müßen
wenn es da nichts gibt frag mal die mitarbeiter (falls du interne abteilung bist) ob die irgendwas brauchen
die antwort ist eigentlich relativ simpel
schaun wir das mal am beispiel von ASCII an:
ASCII ist als 7 Bit Zeichensatz definiert, d.h. der bytewert der einzelnen zeichen kann von 0 - 127 gehen.
was passiert nun wenn man ein zeichen umwandeln möchte, was als wert z.b. 128 hat?
ich hab das ganze mal getestet mittels
byte[] b1 = { 126, 127, 128, 129, 130 };
string s = Encoding.ASCII.GetString(b);
byte[] b2 = Encoding.ASCII.GetBytes(s);
resultat war das b2 folgender weise belegt war:
byte[] b2 = { 126, 127, 63, 63, 63 };
d.h. also beim umwandeln zum string wird bei allen zeichen die höher sind als 127 ein ? ausgegeben, was der 63 entspricht
bekräftigt wird diese vermutung durch den wert von s
dieser ist "~???"
daher das problem das byte[]>string>byte[] probleme bereiten kann
das liegt daran das oledb keine benannten parameter kennt
normaler weise ist es schon ein wunder dsa der die @-parameter schluckt
aber wie wir letzens festgestellt haben geht das wohlauch nur (sofern mir bekannt) unter access und dem sql server
normaler weise setzt man an die stelle wo ein parameter kommt ein ?
beim ausführen werden diese dann entsprechend der reihenfolge der parameter in der parameterliste eingesetzt
daher dein id an das ende 🙂
bei den umwandlungen müßtest du halt auf das encoding achten und ob du den wert des bytes darstelle möchtest oder das entsprechende zeichen aus dem ascii zeichensatz
normaler werden nur die werte der bytes als string genommen also z.b.
7e716d0e702df0505fc72e2b89467910
Ich versteh nicht ganz den Sinn deiner HashInString Methode.
Was genau wilslt du mit ihr denn machen?
Auch finde ich es unschön das nach dem "Test" der Eingabestring den Hashwert voran geschrieben hat. Was für einen Sinn soll das denn ergeben?
naja schau mer mal... bestimmte richtlinien muß man aj auch einhalten und vom umfang her muß es halt auch passen 🙂
OleDbParameterCollection.Add-Methode (String, Object)
HINWEIS: Diese Methode ist mittlerweile veraltet.Fügt der OleDbParameterCollection einen OleDbParameter mit dem angegebenen Parameternamen und -wert hinzu.
also er fügt ihnen eigentlich schon einen wert hinzu
aber wie gesagt funktioniert das mit den benannten parametern überhaupt?
bekommst du irgendeine fehlermeldung zurück?
ansonsten probier mal
public void Update(BaelleInfo info) {
try {
con = new ConnectionSettings();
OleCon = new OleDbConnection(con.GetConnectionString);
OleCon.Open();
cmd = new OleDbCommand();
cmd.Connection = OleCon;
cmd.Parameters.Add("@Hersteller", info.Hersteller);
cmd.Parameters.Add("@Bezeichnung", info.Bezeichnung);
cmd.Parameters.Add("@Farbe", info.Farbe);
cmd.Parameters.Add("@Kern", info.Kern);
cmd.Parameters.Add("@RG", info.RG);
cmd.Parameters.Add("@Differential", info.Differential);
cmd.Parameters.Add("@Gewicht", info.Gewicht);
cmd.Parameters.Add("@Oil", info.Oil);
cmd.Parameters.Add("@ImageUrl", info.ImageUrl);
cmd.Parameters.Add("@BallID", info.BallID);
string sql = "UPDATE Baelle SET "+
" [Hersteller] = @Hersteller, "+
" [Bezeichnung] = @Bezeichnung, "+
" [Farbe] = @Farbe, "+
" [Kern] = @Kern, "+
" [RG] = @RG, "+
" [Differential] = @Differential, "+
" [Gewicht] = @Gewicht, "+
" [Oil] = @Oil, "+
" [ImageUrl] = @ImageUrl "+
"WHERE"+
" [BallID] = @BallID ";
cmd.CommandText = sql;
cmd.ExecuteNonQuery();
} catch(Exception exc) {
System.Diagnostics.Trace.WriteLine("[UpdateBall] Error: "+exc.Message);
} finally {
cmd.Dispose();
OleCon.Close();
}
}
ich hab nur deine BallID an das ende der parametliste gesetzt
hehe bin auch grad dabei mir ne projektarbeit zu suchen
aber zum glück gibts intern in der firma da paar sachen die mal umgesetzt werden müßten
mal schaun was dann die leute der ihk dazu sagen^^
klappt dsa bei oledb mit den benannten parametern auch?
kannst du mal schaun was für ein query wirklich zur db geschickt wird?
müßte über den debugger auch rausfindbar sein
also wenn dein mauscursor in der textbox stehst und du einen rechtsklick machst, dann kannst du doch von der textbox die position des textcursors abfragen, oder nicht?
und dann fügst du da deinen text ein
mußt du halt, wenn du ne große textbox hast und den text an einer anderen stelle einfügen möchtest wo dein aktueller textcursor steht, erstmal die linke taste drücken, damit du dorthin den cursor setzt, und dann über rechte teste das menü aufrufen um den text einzufügen
das ist das standardverhalten nun mal
p.s. gruß nach leipzig (bin da in der "nähe" aufgewachsen) 🙂
probier mal SelectionStart
Ruft den Anfangspunkt des im Textfeld markierten Texts ab oder legt diesen fest.
solltest dich trotzdem an deren support wenden. immerhin bist du ein potenzieller kunde 😉
nachtrag: mal die dll im reflector geöffnet und mir scheint die bauen da dynamisch ein modul auf für den pinvoke... also definitiv kontaktiere den hersteller
der kennt das ding und kann dir am ehesten helfen
deine c# lib ruft aber per pinkvoke mehtoden aus einer c lib auf
dein problem ist, das die typen die bei der deklaration der funktion in c# angegeben wurden, wohl nicht zu denen der c typen paßt, denn die größe vom stack scheint zu klein oder zu groß zu sein
da du diese assembly wohl gekauft hast, solltest du dich an den support wenden
hm, könntest du den quellcode für deinen webservice mal posten? brauhc sowas eventuell auch demnächst... kannst ja alles bezüge auf interne funktionen mit platzhaltern markieren 🙂
Wie kann ich abfangen, dass eine alte Office Version auf dem Rechner installiert ist?
naja du könntest einfach eine instanz erzeugen und die version abfragen 🙂
aber in die registry schaun wäre wohl etwas schneller und resourcenschonender 🙂