-
Gesamte Inhalte
113 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von DerWolf
-
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
hui, doch so viele Schleifendurchläufe! Ja, ich werde jetzt mal schauen, obwohl die Speicherauslastung vom Server noch im akzeptablem Rahmen liegt. Auf Test-DBs wollte ich eigentlich verzichten, aber da muß ich jetzt wohl durch. Schaun`mer mal! MfG -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Moin DerKleine: Habe keine TestDatenbanken. Die erste DB hat 67, die 2te 50 Tabellen. Bei den Feldnamen, hui, da sind es laut Debugger knapp 939x913 Schleifendurchläufe. Bei den Indizes etwas weniger.(270x254) Da ich über einen Terminalclient auf den Server zugreife, und über diesen auch arbeite, kann ich mir wirklich nicht vorstellen, das es irgendwie irgendwelche HW-Probleme sind. Wie schon gesagt, wenn ich nur die Tabellen der beiden DB anzeigen lasse, dauert es ca. 40 sec, bis ich das Ergebnis habe. Wenn ich dann die Feldnamen und Indizes dazu mache, dauert es ewig bzw. das Programm reagiert nicht mehr. Ach ja, die Verbindung zur Datenbank. Eigenes Package, 2 TWDatabase und ein SQLTable. Wenn ich auf den Vergleichen-Button klicke, überprüfe ich auch nochmal, ob eine Verbindung zu einer Datenbank besteht.(Zusammen mit einer Messagebox) if WilleDatabase.Connected and WilleDatabase2.Connected then Form2.Show else Application.MessageBox(PChar('Sie müssen 2 Datenbanken auswählen!'), PChar('DB-Explorer: Information'), MB_OK + MB_ICONINFORMATION); Und der Code ist noch der selbe! MfG -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Hallo nochmal! Leider wird das hier noch zu Never Ending Story! Das liegt aber wohl an mir! @DerKleine: Dein Tip, mit der 2ten StringList (gleicheTabellen) funktioniert nicht. Bei mir zumindest nicht! Da das Programm schon jetzt 40 sec (ca.) für das Ergebnis braucht um es anzuzeigen, dauert es mit der 2ten StringList zusätzlich noch erheblich länger. Zudem wird mir kein Ergebnis angezeigt bzw. das Programm reagiert nicht. Was mach ich bloß falsch? :confused: Wäre es nicht mein Projekt für die Prüfung, hätte ich es schon längst aufgegeben. Wäre toll, wenn vielleicht noch jemand anderes einen Tip hat. Oder zur Ergänzung. Ich komme momentan jedenfalls nicht weiter, leider! MfG -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Also //testwert2 statt felder2.strings[l]. ich habe es in Testwert2 geändert. Jetzt dauert es noch länger. Jetzt bekomme ich zwar keine Compiler-Warnung mehr, aber das Programm dauert extrem lang und reagiert später nicht und son Kram Dann habe ich den Brechpunkt gesetzt, auf die for-Schleife. Wenn ich dann mit f7 weiter gehe, dauert es wieder ca 5-10 sec. bis der blaue Balken ein weiter geht, da das gleiche Spielchen. Und dann geht er erst in die normal for-Schleife! hmpf, was soll ich da bloß tun? -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Okay, die Sache mit dem Brechpunkt! Hätte ich auch von selber drauf kommen können! hm, schauen wir uns da mal an! Bis später MfG -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Danke DerKleine!:bimei Habe es ausprobiert und beim Compilieren kam die Warnung: for-Schleifenvariable"l" kann nach dem Durchlauf undefiniert sein. Okay, dann habe ich das Programm trotzdem mal ausgeführt, nachdem ich auf den Vergleichbutton clickte, dauerte es ungefähr 20 Sec. ca bis ich überhaupt ein Ergebnis bekommen habe. In dem Falle nur die Tabellen Und dann bekam ich noch eine Fehlermeldung, und zwar Listenindex überschreitet das Maximum (913) Was bedeutet diese Meldung :confused: Was kann ich überhaupt machen, das das Ergebnis sofort angezeigt wird. Denn auch wenn keine Fehlermeldung kommt, und ich alles angezeigt bekomme, dauert es genauso lange. Oder dauern die Schleifendurchläufe so lang? MfG -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Hey, den Thread habe ich mir gerade zum Teil durchgelesen. Und ich muß feststellen, ich bin gar kein DAU! Du erinnerst dich richtig, ich habe im Form2 insgesamt 6 ListViews(2 für die Tabellen, 2 für die Feldnamen und 2 für die Indizes). Wegen der Übersichtlichkeit wollte ich vor den Feldnamen den Tabellennamen stehen haben. Bei den Indizes sogar Tabelle.Feldname. Indizes, wenn dieses möglich ist. Wegen der Übersichtlichkeit deswegen, weil sonst keiner weiß, von welcher Tabelle jener Feldname oder Indizes ist! Hoffe, ich habe das jetzt verständlich rüber gebracht. Nun der Code Tabellen := TStringList.Create; Tabellen2 := TStringList.Create; gleicheTabellen := TStringList.Create; WilleDatabase.GetTableNames(Tabellen, true); WilleDatabase2.GetTableNames(Tabellen2, true); Felder := TStringList.Create; Felder2 := TStringList.Create; WilleDatabase.GetFieldNames(gleicheTabellen.Text, Felder); WilleDatabase2.GetFieldNames(gleicheTabellen.Text, Felder2); Indizes := TStringList.Create; Indizes2 := TStringList.Create; WilleDatabase.GetIndexNames(gleicheTabellen.Text, Indizes); WilleDatabase2.GetIndexNames(gleicheTabellen.Text, Indizes2); for i := 0 to Tabellen.Count-1 do begin testwert := Tabellen.Strings; gefunden := false; for z := 0 to Tabellen2.Count-1 do begin if Tabellen2.Strings[z] = testwert then begin gefunden := true; gleicheTabellen.Add(testwert2); end; end; if gefunden = false then begin //Showmessage('Gefunden wurde: '+testwert+' in erster Tabelle, aber nicht in zweiter'); List := Form2.ListView1.Items.Add; List.Caption := testwert; end; end; for z := 0 to Tabellen2.Count-1 do begin testwert := Tabellen2.Strings[z]; gefunden := false; for i := 0 to Tabellen.Count-1 do begin if tabellen.Strings = testwert then begin gefunden := true; end; end; if gefunden = false then begin //Showmessage('Gefunden wurde: '+testwert+' in zweiter Tabelle, aber nicht in erster'); List := Form2.ListView2.Items.Add; List.Caption := testwert; end; end; for k := 0 to Felder.Count-1 do begin testwert2 := Felder.Strings[k]; gefunden := false; for l := 0 to Felder2.Count-1 do begin if Felder2.Strings[l] = testwert2 then begin gefunden := true; end; end; if gefunden = false then begin //Showmessage('Gefunden wurde: '+testwert+' in erster Tabelle, aber nicht in zweiter'); List := Form2.ListView3.Items.Add; List.Caption := Tabellen2.Strings[z]+'.'+felder2.strings[l]; end; end; for l := 0 to Felder2.Count-1 do begin testwert2 := Felder2.Strings[l]; gefunden := false; for k := 0 to Felder.Count-1 do begin if Felder.Strings[k] = testwert2 then begin gefunden := true; end; end; if gefunden = false then begin List := Form2.ListView4.Items.Add; List.Caption := testwert2; end; end; for m:= 0 to Indizes.Count-1 do begin testwert2 := Indizes.Strings[m]; gefunden := false; for n := 0 to Indizes2.Count-1 do begin if Indizes2.Strings[n] = testwert2 then begin gefunden := true; end; end; if gefunden = false then begin List := Form2.ListView5.Items.Add; List.Caption := testwert2; end; end; for n := 0 to Indizes2.Count-1 do begin testwert2 := Indizes2.Strings[n]; gefunden := false; for m := 0 to Indizes.Count-1 do begin if Indizes.Strings[m] = testwert2 then begin gefunden := true; end; end; if gefunden = false then begin List := Form2.ListView6.Items.Add; List.Caption := testwert2; end; end; Tabellen.Free; Tabellen2.Free; Felder.Free; Felder2.Free; Indizes.Free; Indizes2.Free; gleicheTabellen.Free; end; Kannst du damit etwas anfangen? -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Sorry, bin halt ein DAU! Mit Laufvariable meinst du bestimmt den INDEX? oder? Und warum brauche ich da nur eine Tabelle angeben. Verstehe ich nicht! Dann steht doch vor dem Punkt immer ein und dieselbe Tabelle. Avber es können doch auch verschiedene Tabellen sein? hmpf, :confused: -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Hallo Der Kleine! Danke für dein Engagement mir zu helfen! Sorry, habe es ausprobiert, bekomme zwar was angezeigt, ist aber nicht der Tabellenname. Die Tabellen habe ich ja vorher auch in eine StringList eingelesen, kann ich das irgendwie miteinander verbinden? So ungefähr? 'Tabellen.'+testwert2 //quasi mein jetziges Ergebnis! hm, wie geht das? :confused: MfG -
[Delphi] Im ListView den Feldnamen mit dazugehörigem Tabellennamen ausgeben
DerWolf antwortete auf DerWolf's Thema in Delphi/RPG+CL/Sonstige
Oh, Sorry! Irgendwie funzt das nicht mit der Einrückung! Bitte nochmal um Verzeihung! -
Hallo mal wieder! Ich habe ein Problem mit der Ausgabe bzw. wie ich die Feldnamen mit dazugehörigem Tabellennamen im ListView ausgeben kann quasi --> Tabellennamen: Feldnamen Hier der Code (Special Thanks an Der Kleine!) for k := 0 to Felder.Count-1 do begin testwert2 := Felder.Strings[k]; gefunden := false; for l := 0 to Felder2.Count-1 do begin if Felder2.Strings[l] = testwert2 then begin gefunden := true; end; end; if gefunden = false then begin List := Form2.ListView3.Items.Add; List.Caption := testwert2; end; end; Wie kann ich es da einbauen, das das Prog bei List.Caption := testwert2 auch den Tabellennamen ausgibt? Bitte helft mir! Danke im voraus!! MfG
-
Kann es sein, das dies in England oder Australien war? Die Geschichte kenne ich nämlich schon, aber das war auch schon irgendwie vor über einer Woche. Hat man sogar im Fernsehen gezeigt! Greetz
-
Kann es sein, das dies in England oder Australien war? Die Geschichte kenne ich nämlich schon, aber das war auch schon irgendwie vor über einer Woche. Hat man sogar im Fernsehen gezeigt! Greetz
-
Hm, Danke! Ich versuche mein Bestes! MfG
-
Sorry Jungs! Noch ein kleines Problem! Ich muß ja auch die Feldnamen und Indizes vergleichen. Bei GetFieldNames habe ich das Problem, das ich für die Prozedur eine Tabelle auswählen muß. (Database.GetFieldNames(const TableName: String; List: TString); Ich möchte es aber so machen, das ich keine Tabelle auswähle. Wie kann ich dieses Problem lösen? Wie könnt ihr mir da helfen? Greetz
-
@ JesterDay: Danke auch für diesen Tip! Ja, genau diesen Fehler hatte ich, und Oh Wunder , diesen selber gefunden und beseitigt! Greetz
-
Nachtrag: @ Der Kleine: Sorry, das es nicht funktionierte, war ganz allein mein Fehler. Immer diese Auskommentiererei! Hatte etwas zuviel auskommentiert! Es funktioniert jetzt! Greetz
-
Hm, Schade, wäre auch zu schön um wahr zu sein! Nach beseitigung einiger nicht gravierender Fehler habe ich das Prog. dann ausgeführt, aber immer eine Zugriffsverletzung bekommen! Trotzdem Danke! Mal sehen, wie ich das jetzt mache. MfG
-
Ich Danke dir! Ich muß mir das jetzt erstmal genauer anschauen, dann kann ich dir auch sagen, ob du ein Syntaxfehler eingebaut hast! MfG
-
Okay, Hier der Quelltext: procedure TForm1.btnVergleichenClick(Sender: TObject); var Tabellen, Tabellen2: TStrings; i, z: Integer; // List: TListItem; begin if WilleDatabase.Connected and WilleDatabase2.Connected then Form2.Show else Application.MessageBox(PChar('Sie müssen 2 Datenbanken auswählen!'), PChar('DB-Explorer: Information'), MB_OK + MB_ICONINFORMATION); Tabellen := TStringList.Create; Tabellen2 := TStringList.Create; WilleDatabase.GetTableNames(Tabellen, true); WilleDatabase2.GetTableNames(Tabellen2, true); for i := 0 to Tabellen.Count-1 do begin for z := 0 to Tabellen2.Count-1 do begin Tabellen.Equals(Tabellen2); //if Tabellen2[z] <> Tabellen then begin ShowMessage(Tabellen.Strings[z]); //List := ListView1.Items.Add; //List.Caption := Tabellen2[z]; //end; end; end; end; Das mit dem Vergleich stimmt ja halt noch nicht! Also ich möchte erst die Tabellen vergleichen und im ListView ausgeben, dann die Feldnamen und dann die Indizes! Alles im ListView. Und da ich in allen Büchern, die ich hier finden konnte, nix über einen Vergleich gefunden habe, seit ihr meine letzte Rettung! Mein Chef mosert schon rum, ich solle mal langsam fertig werden. Die ShowMessage ist nur zum Test da drin! Eine Update-Funktion muß ich danach auch noch schreiben, das ist aber ein anderes Thema! Nun hoffe ich, ihr könnt hiermit mehr anfangen! Greetz
-
Nachtrag: Der Stringlisten-Vergleich soll ja mit der Funktion Equals funktionieren, aber ich als Newbie bin da völlig :confused: . Wo sind denn die ganzen Delphi-Cracks hin? Wer mir da helfen kann,..... die Lösung ist mir sehr wichtig, da ich es für mein Projekt brauche! Habt Verständnis! Greetz
-
Hm, von the-arena.de habe ich schon mal was von gehört. Glaube, da war irgendwas mit Gladiatorenkämpfe oder so, bin mir da aber nicht ganz sicher. Die anderen kenn ich nicht. Ich interessiere mich da mehr an Echtzeit-Aufbau-Games. Spaceassault spielt im Weltall, wie der Name eigentlich schon sagt , da ist alles berücksichtigt, Aufbau seines Planeten, Forschung, Verteidigung, Handel mit anderen Spielern/Allianzen. Das Game ist schon richtig gut gelungen! Davor hatte ich GalaxyWars gespielt. Ist auch so ein Spiel, geht in die gleiche Richtung. Das war aber nicht soweit durchdacht, zuviele Bugs! MfG
-
Hallo! Wollte mal wissen, wer von euch auch Browsergames spielt? Spaceassault oder in der Art! MfG
-
Nochmal zurüch zum Vergleich zweier Datenbanken! Als erstes möchte ich die Tabellen der Datenbanken vergleichen, d. H., ich mache es mit StringLists. Tabellen := TStringList.Create; Somit will ich die StringList1 mit der StringList2 vergleichen und nur die Unterschiede in einem ListView ausgeben! Hoffe, ich habe es einigermaßen verständlich erklärt! Wer kann mir diesmal helfen? Bitte! Greetz
-
Danke für die Antwort! Das Problem mit dem Form hatt ich schon selbst gelöst, und mit dem Vergleich, ja mal schaun, das werde ich schon irgendwie hinbekommen. Werde versuchen, es mit StringListen zu machen und die Stringlisten dann vergleichen! Hoffe es funktioniert! Greetz