![]() |
Tlist wird nicht richtig gefüllt
Hallo,
ich schreibe an einem NonVCL Programm und möchte eine TList mit meinen Accountdaten füllen. Die Daten werden auch richtig in die Liste eingetragen, aber sobald ich die Daten aus der Liste auslesen möchte zeigt der mir von den zwei Accounts zweimal den zweiten an. Hier mal der Code:
Delphi-Quellcode:
Das Ergebnis in der Konsole ist:
type
TAccounts = class(TObject) ID : Integer; Name : String; Passwort : String; ban : integer; end; ... q:='select * from user;'; FResult := FMysql.query(q, true, ex); if ex then begin ListAccounts:= TList.Create; Account:= TAccounts.Create; FResult.First; for I := 0 to FResult.RowsCount - 1 do begin Account.ID := strtoint(Fresult.FieldValuebyname('id')); Account.Name := Fresult.FieldValuebyname('username'); Account.Passwort := Fresult.FieldValuebyname('password'); Account.ban := strtoint(Fresult.FieldValuebyname('ban')); ListAccounts.Add(Account); FResult.Next; end; ... for E := 0 to SQL.ListAccounts.Count -1 do begin Account := SQL.ListAccounts.Items[E]; WriteLN('Name: '+Account.Name+' | '+'ID: '+inttostr(Account.ID)); end; Name: test | ID: 2 Name: test | ID: 2 Eigentlich müsste es aber so aussehen: Name: XXcD | ID: 1 Name: test | ID: 2 Wo könnte da der Fehler liegen? |
Re: Tlist wird nicht richtig gefüllt
Das
Delphi-Quellcode:
muss natürlich mit in die For-Schleife, sonst legst Du keinen neuen Account an, sondern überschreibst den bestehenden.
Account:= TAccounts.Create;
|
Re: Tlist wird nicht richtig gefüllt
Zitat:
|
Re: Tlist wird nicht richtig gefüllt
Lol wenn ich Account:= TAccounts.Create; in die for Schleife einfüge funktioniert es.
Ich dachte Account wäre nur temporär da das in die ListAccounts eingefügt wird und beim auslesen wieder in Account geladen wird. |
Re: Tlist wird nicht richtig gefüllt
Nee nee, die einzelnen Objekte müssen auch alle erzeugt werden. Wieso nimmst Du eigentlich keine TObjectList statt TList?
|
Re: Tlist wird nicht richtig gefüllt
Hallo XXcD!
Mich wundert, das es jetzt funktioniert: Du sagst, das Dein TList Objekt nicht funktioniert, aber Du hast geschrieben:
Delphi-Quellcode:
statt:
type
TAccount = class(TObject) ... end;
Delphi-Quellcode:
In TList hast Du alles, was Du für Deine Liste brauchst. Warum da ein neues Listenobjekt?
type
TAccount = class(TList) ... end; |
Re: Tlist wird nicht richtig gefüllt
TAccounts ist die Deklaration eines Objekts. Mit diesen Objekten will er seine Liste befüllen, das ist doch völlig korrekt.
|
Re: Tlist wird nicht richtig gefüllt
Wenn ich jetzt direkt ne TList nehme ist das doch bestimmt ein wenig Ressourcen schonender.
Aber wie kann ich das umsetzen? So siehts bei mir bis jetzt aus:
Delphi-Quellcode:
type
TAccounts = class(TList) ID : Integer; Name : String; Passwort : String; ban : integer; end; ... q:='select * from user;'; FResult := FMysql.query(q, true, ex); if ex then begin Account:= TAccounts.Create; FResult.First; for I := 0 to FResult.RowsCount - 1 do begin test. Account.ID := strtoint(Fresult.FieldValuebyname('id')); Account.Name := Fresult.FieldValuebyname('username'); Account.Passwort := Fresult.FieldValuebyname('password'); Account.ban := strtoint(Fresult.FieldValuebyname('ban')); // Wie gehts denn hier weiter???<--------------------------------- FResult.Next; end; |
Re: Tlist wird nicht richtig gefüllt
Ehm, du hast nun kein Objekt, mit dem du die Liste füllen könntest!
Hast du dich schon mal mit Listenverwaltung beschäftigt? Würde sagen, dass du dir erstmal Grundlagenwissen aneignen solltest... |
Re: Tlist wird nicht richtig gefüllt
Ja hab mich schon mit Listenverwaltung beschäftigt, aber bisher noch nie in NonVCL.
Ich möchte auch eigentlich nur die Tabelle von meiner MySQL Datenbank direkt ins Programm laden und wenn sich einer einloggt, sollen die Daten aus der Liste genommen werden. Wenn es da noch bessere Möglichkeiten gibt, als die die ich im Moment habe gebt mir bitte etwas code womit ich nen wenig lernen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz