Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datei Byteweise einlesen und in String speichern (https://www.delphipraxis.net/113196-datei-byteweise-einlesen-und-string-speichern.html)

-Lucky- 4. Mai 2008 12:48


Datei Byteweise einlesen und in String speichern
 
Erst einmal ein nettes Hallo meinerseits, bin neu hier.

:duck:

Bevor jetzt jemand kommt, das Thema hatten wir schon X-Mal, nein, ich habe gesucht und keine direkte Antwort auf meine Fragen gefunden.

Problem: Ich möchte eine x beliebige Datei nehmen, und die einzelnen Bytes alle einzeln einlesen, dass sie in einem String temporär zwischengespeichert werden. Umgekehrt soll es auch möglich sein, das String wieder als Datei abzuspeichern.

Es ist möglich, den Inhalt einer Datei in ein Memofeld zu laden, alles kein Problem. Aber ich möchte die einzelnen Bytes als Ascii Zeichen direkt in einem String haben, z.B. von einer Exe Datei. Inkl. den Steuerzeichen, also die nicht Buchstaben.

Zum einen könnte man das über TFileStream lösen, aber hier die Zeichen in String umzuwandeln dauert sehr lange, kann auch sein dass meine Prozedur einfach nur uneffektiv ist, da ich auf jedes Zeichen einzeln zugreife. Kann man gleich alles mit einmal in ein String packen?

Also ich suche eine schnelle Prozedur, wie ich eine x-Beliebige Datei in ein String packen kann, und den Text dann wieder als Datei abspeichern kann.

Für eure Hilfe wäre ich sehr dankbar^^

yankee 4. Mai 2008 13:51

Re: Datei Byteweise einlesen und in String speichern
 
textfile könnte dir helfen...

http://www.delphibasics.co.uk/RTL.asp?Name=TextFile

EDIT: Übrigens: Willkommen in der DP :dp: , und das ist wohl oder übel das falsche Forum für die Frage ^^.

marabu 4. Mai 2008 13:57

Re: Datei Byteweise einlesen und in String speichern
 
Hallo,

hier ist noch ein Thread zum gleichen Thema: klick

Freundliche Grüße

himitsu 4. Mai 2008 14:00

Re: Datei Byteweise einlesen und in String speichern
 
du mußt einfach nur unktionen verwenden, welche keiner Stringbehandlung unterliegen.

z.B.:
Delphi-Quellcode:
FS: TFileStream;
S: String;

FS := TFileStream.Create('Da.tei', fmOpenRead);
SetLength(S, FS.Size);
FS.ReadBuffer(S[1], FS.Size);
FS.Destroy;
alternativ geht alles was wie [oh]{TStream.}ReadBuffer[/oh] oder Delphi-Referenz durchsuchenBlockRead arbeitet,
also nicht so wie Read und ReadLn.

[edit] mit Fehlerprüfung ala FileToString und StringToFile kommt's natürlich noch besser :stupid:

-Lucky- 5. Mai 2008 21:27

Re: Datei Byteweise einlesen und in String speichern
 
Danke für die Antwort. Werde mir das morgen mal in Ruhe durcharbeiten, wenn ich Zeit habe, und dann schreiben, ob ich mein Problem damit lösen konnte.

Ich hab auch noch nen paar andere Probleme, aber eins nach dem anderen :thumb:

Warum bin ich nicht schon früher auf die Idee gekommen hier Hilfe zu suchen, ich hoffe ich kann auch mal helfen.

zeras 29. Jan 2009 20:23

Re: Datei Byteweise einlesen und in String speichern
 
Ich habe mal meine byteweise Suche in großen Dateien geändert von

read(f,c)

in oben genanntes.
Ein Super Geschwindigkeitsvorteil. Mit alter Funktion mindestens 20 sek. mit neuer Funktion ca. 1-2 sek.

Super!!!!!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr.

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