Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Probleme mit TStringList.Add? (https://www.delphipraxis.net/4974-probleme-mit-tstringlist-add.html)

mjenke 19. Mai 2003 07:15


Probleme mit TStringList.Add?
 
Hallo, alle miteinander!

Ich habe in den letzten Tagen mehrfach ein Phänomen erlebt, das ich mir nicht erklären kann. Wenn ich versucht habe, einem Objekt vom Typ TStringList einen neuen Eintrag zuzufügen, ist es mitunter einfach nicht aufgenommen worden. Dies geschah in einer Schleife. Ich habe eine Textdatei analysiert und wollte verschiedene Strings in einer StringList speichern.

Die StringListe hat aber bei weitem nicht alle Strings enthalten, die sie hätte enthalten müssen.

Habe ich dagegen mit dynamischen Arrays gearbeitet, gab es keinerlei Probleme.

Mit anderen Worten:
Delphi-Quellcode:
Liste := TStringList.Create;
for counter := 0 to Anzahl do begin
  Liste.Add(Eintrag[counter]);
end;
bereitet mir Probleme, wohingegen:
Delphi-Quellcode:
SetLength(DynArray,0);
int_counter := 0;
for counter := 0 to Anzahl do begin
  SetLength(DynArray,int_counter+1);
  DynArray[counter] := Eintrag[counter];
  Inc(int_counter);
end;
funktioniert. Das Array ist offensichtlich umständlicher, und wenn ich schon ein Objekt in Form einer Liste haben, wollte ich es auch nutzen.

Ist mir sowohl mit Delphi 4 Enterprise als auch mit Delphi 5 Professional passiert.

Kennt jemand dieses Phänomen? Kann man da etwas unternehmen?

:?:
Matthias

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Duffy 19. Mai 2003 08:10

Hallo mjenke
ist Eintrag auch eine StringList? wenn ja, müßte es heißen
Delphi-Quellcode:
for counter := 0 to Anzahl - 1 do begin
ansonsten kenne ich das Problem nicht
bye

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Duffy 19. Mai 2003 08:18

Hallo mjenke,
muß mich nochmal korrigieren, bin noch nicht wach!
Delphi-Quellcode:
for Counter := 0 to Eintrag.Count - 1 do begin
dann sollten alle Strings dasein!

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Gaius 19. Mai 2003 09:50

Hallo,

steht vielleicht die Eigenschaft Duplicates auf dupIgnore?
Dann werden keine Duplikate angelegt.

Tschüss

mjenke 19. Mai 2003 10:12

@Duffy:
Eintrag ist keine StringList. Eintrag ist ein Array von der Grösse Anzahl. Das ganze ist kein echter Code, sondern nur die Zusammenfassung des Problems. Ich hätte die Zeile auch
Delphi-Quellcode:
for counter := 0 to Length(Eintrag)-1 do begin
schreiben können. Aber das ist nicht der Kern des ganzen. Die Liste beinhaltet die hinzugefügten Strings einfach nicht... :(

@Gaius:
Nein. Duplicates steht nicht auf dupIgnore. Ausserdem wären es auch keine Duplikate. Ich habe noch keine Regelmässigkeit darin entdeckt, welche Einträge nicht aufgenommen werden...

Trotzdem danke für die Vorschläge...
:(
Matthias

[edit=Daniel B]Delphi-Tags eingefügt. MfG Daniel B.[/edit]

Ricane 13. Nov 2003 10:19

Re: Probleme mit TStringList.Add?
 
Moin,

ich habe genau das gleich Problem; also das der Add Befehl für die StringList einfach nicht angenommen wird...

Ich habe eine Liste die CARS heisst. Diese habe ich ordentlich erstellt mit dem Create Befehl erstellt. Wenn ich per Add Befehl dann etwas einfügen will, ist der Eintrag aber einfach nicht drin... Das Result von dem Add Befehl ist nicht -1, also sollte es eigentlich geklappt haben... hat es aber nicht... hier noch mal die Übersicht der Befehle!

Delphi-Quellcode:
    Cars := TStringList.Create;
    Umweg := FAdo.AQFHZ.FieldByName('ID').AsString;
    Cars.Add(Umweg);
Natürlich habe ich auch schon versucht das ganze ohne die Umweg-Variable zu machen, welche vom Typ String ist, aber das klappt auch nicht. Die Umweg-Variable ist gefüllt.

Any Ideas?!


Grüsse,

Ricane

Tyrael Y. 13. Nov 2003 10:50

Re: Probleme mit TStringList.Add?
 
kann es vielleicht sein, daß ihr leere Strings in die TStringList
füllt und beim Lesen halt zwischendurch nix angezeigt bekommt,
weil eben halt nix zu sehen ist?

macht doch mal ne Überprüfung auf leere strings drumherum

Ricane 13. Nov 2003 11:21

Re: Probleme mit TStringList.Add?
 
Nee, die Zeilen laufen ja direkt so ab... da sind nirgendswo noch leere Strings dazwischen...

Ach ja, eine Zeile hab´ ich im oberen Code noch vergessen... Sie müsste zwischen der ersten und der zweiten Zeile stehen und lautet:

Delphi-Quellcode:
  Cars.Clear;


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz