![]() |
Datei komplett in einen String lesen
Hallo,
ich suche eine Funktion, mit der ich ein komplettes File in einen String laden kann? Ich habe in der Hilfe etwas herumgesucht und nur die Windows readfile Funktion gefunden. Gibt es da etwas weniger "systemnahes" oder muss ich mir das selbst basteln? |
AW: Datei komplett in einen String lesen
Moin,
schau Dir doch mal TFileStream an. |
AW: Datei komplett in einen String lesen
Wie wäre es mit einer StringListe?
|
AW: Datei komplett in einen String lesen
Geht das vielleicht mit der StringList. Irgendwo kann man die ganze Liste zu einem string machen. .. glaub ich
|
AW: Datei komplett in einen String lesen
Delphi-Quellcode:
function FileLoad(const Filename: String; const Encoding: TEncoding = nil): String;
var Strings: TStrings; begin Strings := TStringList.Create; try Strings.LoadFromFile(Filename, Encoding); Result := Strings.Text; finally Strings.Free; end; end; |
AW: Datei komplett in einen String lesen
Suchst du sowas? Ist aus einem alten Projekt, keine Ahnung ob es noch funktioniert. Ich habe auch noch die Save Funktion dazu gepackt, für den Fall, dass du den String auch wieder speichern willst.
Delphi-Quellcode:
function LoadStringFromFile(sInFile: String; var sFileString: String): Boolean;
var FileStream: TFileStream; begin Result := False; if not FileExists(sInFile) then Exit; FileStream := TFileStream.Create(sInFile, fmOpenRead); try if FileStream.Size <> 0 then begin SetLength(sFileString, FileStream.Size); FileStream.Read(sFileString[1], FileStream.Size); Result := True; end; finally FileStream.Free end; end; function SaveStringToFile(sOutFile: String; sFileString: String): Boolean; var FileStream: TFileStream; begin Result := False; FileStream := TFileStream.Create(sOutFile, fmCreate); try if Length(sFileString) <> 0 then begin FileStream.Write(sFileString[1], Length(sFileString)); Result := True; end; finally FileStream.Free end; end; |
AW: Datei komplett in einen String lesen
danke, ich werde die beiden Varianten probieren. LoadStringFromFile könnte ja um einiges schneller sein, falls es noch funktioniert - ich fürchte allerdings, dass die Routine so mit den aktuellen 16-Bit-Characters nicht mehr funktionieren wird, wenn das File mit einem 8-Bit Zeichensatz geschrieben wurde.
|
AW: Datei komplett in einen String lesen
Nicht nur das.
LoadStringFromFile ließt natürlich nur als Unicode ein, aber es wird nur der halbe String behandelt, weil die Bytegröße nicht angepaßt wird. Spätestens ab Delphi 2009 muß also entweder die Datengröße an die des Chars an gepaßt werden, oder man sellt alles auf AnsiString um. Mit einem StringStream oder einer StringList hat man den Vorteil (ab D2009) auch verschiedene Textcodierungen einzulesen, da dort intern eine Konvertierung eingebaut wurde. |
AW: Datei komplett in einen String lesen
Da frage ich mich doch wofür das gut sein soll. Natürlich kann man eine Datei, bzw. ihren Inhalt in einen String packen, aber wofür soll das gut sein?
Wie wäre es denn stattdessen ein Array of Byte (Array of AnsiChar) zu nutzen? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:22 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