Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Textdatei zeichenweise laden (https://www.delphipraxis.net/7637-textdatei-zeichenweise-laden.html)

Prolinesurfer 18. Aug 2003 11:28


Textdatei zeichenweise laden
 
Hi!

Kann man aus Textdateien irgendwie nur die ersten paar Zeichen bzw. nur bestimmte Zeilen laden?

Prolinesurfer

sakura 18. Aug 2003 11:45

Re: Textdatei zeichenweise laden
 
Generell ja, stellt sich nur die Frage um was für Datenmengen es sich handelt ;-)

Im Forum nach Hier im Forum suchenTStringList or TStrings or StringListen und Hier im Forum suchenTStringList and Lines and LoadFromFile sollte Dir helfen.

...:cat:...

Jens Schumann 18. Aug 2003 11:58

Re: Textdatei zeichenweise laden
 
Hallo,
da ich nicht genau weiss was Du möchtest schlage ich folgendes vor.
Delphi-Quellcode:
procedure LoadFromTextFileExt(TextFilename : TFilename; L : TStrings; Ident : String; FromPos, Count : Integer);
var
  _File : System.Textfile;
  _Line : String;
begin
  L.Clear;
  AssignFile(_File,TextFilename);
  Reset(_File);
  Try
    While Not EOF(_File) do
      begin
      Readln(_File,_Line);
      If Pos(Ident,_Line)>0 then
        L.Add(Copy(_Line,FromPos,Count));
      end;
  Finally
    CloseFile(_File);
    end;
end;
Die procedure liest die Textdatei zeilenweise. Befindet sich in einer Zeile der Inhalt von Ident werden aus dieser Zeile ab der Position FromPos Count Zeichen kopiert und an L gehängt.

Prolinesurfer 18. Aug 2003 12:07

Re: Textdatei zeichenweise laden
 
Hm, also zeilenweise ist doch nicht so gut. Eigentlich will ich wirklich nur die ersten 4-5 Zeichen laden.

Ich will das eben bei beliebig großen Dateien durchführen und wenn die erstmal 5 mb übersteigen, erübrigt sich das Laden des gesamten Inhalts.

Jens Schumann 18. Aug 2003 12:10

Re: Textdatei zeichenweise laden
 
Hallo,
ach so, dann mach doch folgendes
Delphi-Quellcode:
function FirstSigns(TextFilename : TFilename; Count : Integer) : String;
var
  _File : System.Textfile;
  _Line : String;
begin
  AssignFile(_File,TextFilename);
  Reset(_File);
  Try
    Readln(_File,_Line);
    Result:=(Copy(_Line,1,Count));
  Finally
    CloseFile(_File);
    end;
end;

Prolinesurfer 18. Aug 2003 12:16

Re: Textdatei zeichenweise laden
 
Ja, genau das hab ich gesucht!

Danke!!!

flomei 12. Dez 2003 21:59

Re: Textdatei zeichenweise laden
 
Wie kann man das zeichenweise lesen in eine Schleife packen?
Ich hab hier nämlich nen String den ich aus einer Textdatei auslese aber ich möchte für jedes einzelne Zeichen gerne etwas ausführen.

Thx for help!

MfG Florian :hi:

Christian Seehase 12. Dez 2003 22:23

Re: Textdatei zeichenweise laden
 
Moin Florian,

schau Dir doch mal TFileStream an.
Du könntest dann den String entweder zeichenweise einlesen, oder komplett und dann Zeichenweise auslesen.
Für das zeichenweise Einlesen, könntest Du dann als Buffer eine Variable vom Typ Byte oder char nehmen, und anhand des jeweils eingelesenen Wertes mit case entscheiden, was jeweils zu tun ist.
Aus Performancegründen solltest Du hierbei allerdings den endgültigen String gleich ausreichend gross anlegen, und dann immer das Zeichen an den gerade aktuellen Index schreiben.

flomei 12. Dez 2003 22:52

Re: Textdatei zeichenweise laden
 
Also kann man den Code von Jens nicht irgendwie umschreiben?
Ich hab den Text aus der Datei nur halt in eine Stringlist geschrieben usw. und ich dachte da könnte man ihn gleich weiterbearbeiten...

MfG Florian :hi:

eddy 13. Dez 2003 17:55

Re: Textdatei zeichenweise laden
 
Hallo,

es gibt dann noch die Möglichkeit ReadBuffer zu verwenden. Du lädst die Zeichen in ein Array und dann kannst Du mit jedem Byte machen, was immer Du willst.

mfg
eddy


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 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-2025 by Thomas Breitkreuz