Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Problem mit Laden einer Datei (ReadLn) (https://www.delphipraxis.net/71625-problem-mit-laden-einer-datei-readln.html)

Kasch 18. Jun 2006 17:16

Re: Problem mit Laden einer Datei (ReadLn)
 
du meinst alle "n" rauslöschen? :roll:

mkinzler 18. Jun 2006 17:17

Re: Problem mit Laden einer Datei (ReadLn)
 
nein abber es auf den Wert 0 setzen, bevor du es benutzt.

Siehe dazu auch schon mehrere Beiträge in diesem Thread ( von mir, Dax, Hawkeye219)

Helmi 18. Jun 2006 17:21

Re: Problem mit Laden einer Datei (ReadLn)
 
Hallo,

wie meine "Vorredner" schon sagten, die Variable a muss auf 0 gesetzt werden.

Du solltest vielleicht auch einen try/finally-Block einfügen.

so z. B.:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var

    daten: array[1..1000] of string[64];
    a : Integer;
    datei: textfile;

begin
  try
    AssignFile(datei,'d:\string.txt');
    reset(datei);
    a := 0;
    while not eof(datei) do
      begin
        inc (a);
        Readln(datei,daten[a]);
      end;
  finally
    closefile(datei);
  end;
end;

Kasch 18. Jun 2006 17:23

Re: Problem mit Laden einer Datei (ReadLn)
 
hallo,

hatte es vergessen zu schreiben, aber habe es gleich nach dem ersten Hinweis ausprobiert. Fehlermeldung ist nun eine andere, aber der schwere Absturz bleibt...

mkinzler 18. Jun 2006 17:27

Re: Problem mit Laden einer Datei (ReadLn)
 
Funktioniert es mit der Abwandlung?
Delphi-Quellcode:
     inc (a);
      Readln(datei,s);
      daten[a] := s;

Helmi 18. Jun 2006 17:34

Re: Problem mit Laden einer Datei (ReadLn)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Kann es sein, dass deine Textdatei größer ist als dein Array?

Ich hab das mal getestet und dann bekomm ich einen Fehler bei der Bereichsprüfung.

Wenn du mal die angehängte Datei als Test-Datei verwendest, dann wirst du merken, dass es bei Array[1..1000] funktioniert, aber bei Array[1..10] nicht mehr.

omata 18. Jun 2006 17:36

Re: Problem mit Laden einer Datei (ReadLn)
 
Und wieviel Zeilen sind in der Datei? Bei > 1000 knallt es auch...

Hawkeye219 18. Jun 2006 17:41

Re: Problem mit Laden einer Datei (ReadLn)
 
Hallo Kasch,

befolge Markus' ersten Rat und nimm eine TStringList. Die Verwendung des Arrays bringt viele Nachteile mit sich:
  • Was ist, wenn die Länge einzelner Zeilen den Wert 64 überschreitet? In diesem Fall kannst du die Zeilen nicht mehr vollständig verarbeiten, da du nur Platz für 64 Zeichen pro Zeile reserviert hast.
  • Was passiert, wenn die Datei mehr als 1000 Zeilen enthält? Dein Code stellt das nicht fest und schreibt in nicht reservierten Speicher (was übrigens auch den Absturz erklären würde).
  • Wenn die Zeilen der Datei unterschiedlich lang sind, mußt du trotzdem für jede Zeile den Platz für die maximale Zeilenlänge reservieren, da alle Arrayelemente den selben Typ besitzen müssen.
  • Du mußt die Anzahl der Zeilen bereits zur Compile-Zeit kennen, um dein Array zu dimensionieren.
Die Stringliste ist wesentlich flexibler und bietet dir mehr Möglichkeiten als das Array.

Gruß Hawkeye

//Edit: 2. Seite übersehen! :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:43 Uhr.
Seite 2 von 2     12   

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