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 Aus Datei auslesen (https://www.delphipraxis.net/75010-aus-datei-auslesen.html)

kaschte 12. Aug 2006 16:42


Aus Datei auslesen
 
Ich möchte den Inhalt einer Datei in ner Variable speichern. Wie geht das? Krieg das irgendwie nicht so richtig hin.

droppi 12. Aug 2006 17:07

Re: Aus Datei auslesen
 
Guck dir mal typisierte Dateien an. Da musst du natürlich wissen welche Stuktur die Datei hat um die Daten darin sinnvoll weiter zu verwenden. Wenn du Dir nich sicher bist kannst du die Datei auch in eine Variable vom Typ Textfile oder sie Zeilenweise in eine Stinglist einlesen. Es kommt halt immer darauf an was du mit den Daten machen willst.

kaschte 12. Aug 2006 17:09

Re: Aus Datei auslesen
 
In der Datei(.txt) steht nur ein einziges Wort und das ist ein Name eines Registryeintrages, den brauch ich dann später für die Registry.

Jürgen Thomas 12. Aug 2006 17:13

Re: Aus Datei auslesen
 
Welches Verfahren am sinnvollsten ist, hängt doch sehr von der Art der Datei an und davon, was Du damit machen willst:

1. Einfache Textdatei zur Anzeige:
Delphi-Quellcode:
Memo1.Lines.LoadFromFile(sDateiname);
2. Einfache Textdatei zur internen Bearbeitung:
Delphi-Quellcode:
StringList1.LoadFromFile(sDateiname);
3. Formatierte Textdatei:
Delphi-Quellcode:
RichEdit2.PlainText := False;
RichEdit2.Lines.LoadFromFile(Path);
4. Binäre Datei:
Delphi-Quellcode:
FileStream1 := TFileStream.Create(sDateiname, fmOpenRead);
FileStream1.Read( aBuffer, 128 );
Also denke bitte nochmals genauer nach und teile uns das auch mit, was Du willst... Jürgen

Nachtrag:
Zitat:

Zitat von kaschte
In der Datei(.txt) steht nur ein einziges Wort und das ist ein Name eines Registryeintrages, den brauch ich dann später für die Registry.

Das entspricht am ehesten meinem 2. Vorschlag. Zur weiteren Verarbeitung kannst Du verwenden:
Delphi-Quellcode:
s0 := StringList1[0];
// oder
s0 := StringList1.Text;

faux 12. Aug 2006 17:18

Re: Aus Datei auslesen
 
INI- und XML-Dateien sind oft auch ganz praktisch. ;)

Grüße
Faux

omata 12. Aug 2006 17:18

Re: Aus Datei auslesen
 
Hallo kaschte,

oder so...

Delphi-Quellcode:
var Datei:Textfile;
    Zeile:string;
begin
  assignfile(Datei, 'Datei.txt');
  reset(Datei);
  try
    while not Eof(Datei) do begin
      readln(Datei, Zeile);
      // hier kann man nun die einzelnen Zeilen weiterverarbeiten
    end;
  finally
    closefile(Datei);
  end;
end;
Edit: reset-Position korrigiert.

Gruss
Thorsten

Hawkeye219 13. Aug 2006 10:06

Re: Aus Datei auslesen
 
Hallo,

eine kleine Korrektur: der Reset-Befehl sollte aus der TRY-Anweisung herausgenommen werden, damit im Fehlerfall nicht versucht wird, eine nicht offene Datei zu schließen.

Gruß Hawkeye

omata 13. Aug 2006 16:10

Re: Aus Datei auslesen
 
Wieso das?

Ein assignfile funktioniert immer und erzeugt ein Handle. closefile gibt dieses Handle wieder frei. Die erste Zeile in der ein Fehler entstehen kann ist die Zeile in der reset(Datei); steht. Also ist diese Vorgehensweise genau richtig, weil sonst ein Fehler beim Öffnen verhindern würde das das Handle wieder freigegeben wird.

Verwunderte Grüsse
Thorsten

Hawkeye219 13. Aug 2006 16:27

Re: Aus Datei auslesen
 
Hallo Thorsten,

AssignFile funktioniert immer, soweit ist alles richtig. Das Handle wird aber erst durch ein erfolgreiches Reset/Rewrite/Append zugewiesen. Nur im Erfolgsfall muß also dieses Handle durch CloseFile wieder freigegeben werden. Verbleibt das Reset in der TRY-Anweisung, werden im Fehlerfall zwei Meldungen ausgegeben. Die erste erscheint bei Reset (z.B. "Datei nicht gefunden"), die zweite bei CloseFile ("Datei nicht geöffnet").

Gruß Hawkeye

omata 13. Aug 2006 16:51

Re: Aus Datei auslesen
 
Hallo Hawkeye219,

du hast recht. Allerdings kommen die beiden Fehlermeldungen nur wenn man per einzel Schritt durch die Zeilen geht, ausgegeben wird nur eine. Habe mir das mit MemProof nochmal angesehen und bei deiner Variante bleiben weniger Problemsituationen über als bei meiner. Na gut, also das reset ausserhalb des try-finally-Blocks, sieht zwar hässlich aus aber nun gut.

Gruss
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz