Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateien (https://www.delphipraxis.net/135358-dateien.html)

Johannes013 9. Jun 2009 16:34


Dateien
 
Hallo,

ich habe ein Problem:

Wenn ich in einer Stinglist überprüfen lasse, ob in der 4. Zeile, die noch gar nicht existiert, "Testlizenz" steht, kommt die Fehlermeldung, dass ich das Maximum überschreite. Kann man da was machen? Oder kann man den Cursor in der Datei an eine von mir festgelegte Stelle setzen?




Johannes013 :gruebel:

Phoenix 9. Jun 2009 16:36

Re: Dateien
 
Du kannst doch die Anzahl der Zeilen in der Stringlist mittels Count überprüfen. Index darf Count-1 nicht überschreiten.

Johannes013 9. Jun 2009 16:39

Re: Dateien
 
Kannste mir ein einfaches bsp. nennen? ich bin anfänger und verstehe nicht sehr viel von der Delphi hilfe.




Johannes013

markus5766h 9. Jun 2009 16:53

Re: Dateien
 
Hallo,

Anzahl der Einträge in einer String-List bekommst Du mit
Delphi-Quellcode:
var
 n : Integer; // Anzahl der Listeneinträge
 List : TStringList;
begin
n := List.Count -1; // -1, da der erste Index nicht 1 sondern 0 ist
end;
jetzt kannst Du in einem Bereich von 0 bis n auf die StringList zugreifen

Johannes013 9. Jun 2009 17:19

Re: Dateien
 
Heißt das, wenn der Eintrag "Test" in zeile 5 kommen soll, Zeile 5 noch nicht existiert, ist n=4.
ist das dann:

Delphi-Quellcode:
var
Datei:TextFile;
n:Integer;
List:TStringList;
begin
// Assign (...) und Stringlist benennen bzw. laden.......
Append(Datei);
Writeln(Datei, '1.');
Writeln(Datei, '2.');
Writeln(Datei, '3.');
Writeln(Datei, '4.');
// Writeln(Datei, 'Test');
CloseFile(Datei);
if Copy(List[4],1,4)<>'Test' then Form1.color:=clred;
end;
Dann kommt die Meldung: Index überschreitet das Maximum (4).

Satty67 9. Jun 2009 17:25

Re: Dateien
 
hey, nichts weglassen im Code :zwinker:

Scheint so, also ob Du die StringListe lädst und danach erst die Datei mit Werten füllst?

Liste mit 4 Elementen:
Index = 0 - 3
Count = 4

Bei List[Index] und nur 4 Elementen in der Listen, ist List[4] auserhalb

Johannes013 9. Jun 2009 17:29

Re: Dateien
 
Delphi-Quellcode:
var
Datei:TextFile;
n:Integer;
List:TStringList;
begin
// Assign (...)
Append(Datei);
Writeln(Datei, '1.');
Writeln(Datei, '2.');
Writeln(Datei, '3.');
Writeln(Datei, '4.');
// Writeln(Datei, 'Test');
CloseFile(Datei);
// Benennen bzw laden er List...
if Copy(List[4],1,4)<>'Test' then Form1.color:=clred;
List.Free;
end;

wicht 9. Jun 2009 17:32

Re: Dateien
 
Das ist immer noch das selbe wie oben oder?
Versuch mal

Delphi-Quellcode:
Copy(List[3], 1, 4)
Zeilen wie List.Add(text) oder der Inhalt der Datei, die mit List.LoadFromFile(file) geladen wird, das wäre interessant.
Ich denke aber eigentlich, dass deine Frage schon von den anderen beantwortet wurde :stupid:

Satty67 9. Jun 2009 17:35

Re: Dateien
 
Also wie oben beschrieben, List[4] greift auf das 5. Element zu.

Der Index von Listen startet bei 0, d.h. das erste Element ist List[0] und das letzte Element List[Count-1].

Der gepostete Code ist aber nicht alles, ich frage nur, weil neben assignFile auch ein List:TStringList.Create fehlt.

Johannes013 9. Jun 2009 17:42

Re: Dateien
 
:wiejetzt:

Delphi-Quellcode:
var
Datei:TextFile;
n:Integer;
List:TStringList;
begin
// Assign (...)
Append(Datei);
Writeln(Datei, '1.');
Writeln(Datei, '2.');
Writeln(Datei, '3.');
Writeln(Datei, '4.');
// Writeln(Datei, 'Test');
CloseFile(Datei);
// Benennen bzw laden er List...
if Copy(List[4],1,4)<>'Test' then Form1.color:=clred;
List.Free;
end;
wie schlte ich die oben genannte Fehlermeldung aus?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr.
Seite 1 von 2  1 2      

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