Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei lesen, erzeugen und abspeichern! (https://www.delphipraxis.net/32604-datei-lesen-erzeugen-und-abspeichern.html)

qube-us 26. Okt 2004 03:53


Datei lesen, erzeugen und abspeichern!
 
Huhu Leute!!!

Mich würde es mal sehr interessieren, wie man mit Delphi einzelne Bytes aus Dateien, wie in einem Hex-Editor einlesen kann anschließend verändern und wieder in der selben Datei abspeichern kann.

Ich weiß, dass das an sich drei Schritte sind, wobei der mittlere, nämlich das Verändern der Bytes das einzige ist was ich kann.

So bleiben noch die beiden Fragen:
1.) Wie lese ich Bytes aus einer Datei in Delphi ein, bzw. wie kann ich sie während das Delphi-Programm läuft nachträglich noch in das fertige Programm bringen, wie z.B. ein Editor, der auch ein fertiges Programm ist und trotzdem noch nachträglich Dateien lädt.

2.) Wie kann ich Bytes die in einem laufenden Delphi-Programm erzeugt wurden in einer Datei abspeichern?

Ich hoffe ich bekomme eine vollständige und genaue Antwort, die ich auch verstehe und die nicht nur aus einem Befehl besteht, bei dem ich die Anwendung nicht durchblicke, keine Antwort wie man sie in der Delphi-Hilfe bekommt.

Wichtiger ist aber natürlich, DASS ich EINE ANTWORT bekomme. :zwinker:

bye :coder2:

jim_raynor 26. Okt 2004 06:13

Re: Datei lesen, erzeugen und abspeichern!
 
Am Besten nutzt du dafür TFileStream. Benutzung siehe OH und dieses Forum.

qube-us 26. Okt 2004 16:32

Re: Datei lesen, erzeugen und abspeichern!
 
Genau so eine Antwort bringt mir recht wenig, weil ich mit TFileStream garnichts anfangen kann und was OH weiß ich auch nicht.

Aber ich bemühe mich mal hier im Forum was zu finden!!!

CalganX 26. Okt 2004 16:39

Re: Datei lesen, erzeugen und abspeichern!
 
Hi,
OH meint die Online-Hilfe (siehe Worterklärung beim draufzeigen auf OH mit der Maus) und bezeichnet die Hilfe, die bei Delphi dabei ist und die meisten Delphi-Eigenen Funktionen und Typen erklärt. Einfach Delphi-Referenz durchsuchenTFileStream eingeben, Cursor drauf und F1 drücken.

Chris

shmia 26. Okt 2004 17:40

Re: Datei lesen, erzeugen und abspeichern!
 
Mit der folgenden Unit kannst du einen String in eine Datei speichern oder daraus laden:
Delphi-Quellcode:
unit FileStreamUtils;

interface

function LoadStringFromFile(const filename:string):string;
procedure SaveStringToFile(const filename, data:string);


implementation

uses Classes, SysUtils;

function LoadStringFromFile(const filename:string):string;
var
   fs : TStream;
begin
   fs := TFileStream.Create(filename, fmOpenRead or fmShareDenyWrite);
   try
      SetLength(Result, fs.Size);
      fs.ReadBuffer(Result[1], fs.Size);
   finally
      fs.Free;
   end;
end;

procedure SaveStringToFile(const filename, data:string);
var
   fs : TStream;
begin
   fs := TFileStream.Create(filename, fmOpenWrite or fmShareDenyWrite);
   try
      fs.WriteBuffer(data[1], Length(data));
   finally
      fs.Free;
   end;
end;

end.

qube-us 27. Okt 2004 02:06

Re: Datei lesen, erzeugen und abspeichern!
 
Ah, DANKE für den Quellcode, werde mal ein bischen damit herumexperimentieren!!!
Naja, was ich von der Delphi-Hilfe halte habe ich ja oben schon geschrieben: Ich werde aus der nicht schlau!!!

Aber ich hab aufgrund des Quellcodes schonwieder zwei neue Fragen, die aber einfacher zu beantworten sind:

1.) Kann man die Buchstaben der Strings wie Bytes behandeln? Ich möchte nämliche nicht nur Textdateien machen.
2.) Enthält das Array "data" die komplette geladene Datei, so dass man mit data[1] auf das erste Byte zugreift?
und mit data[length(data)] auf das letzte?

Bis dann!!! :thumb:

shmia 27. Okt 2004 07:52

Re: Datei lesen, erzeugen und abspeichern!
 
Zitat:

Zitat von qube-us
1.) Kann man die Buchstaben der Strings wie Bytes behandeln? Ich möchte nämliche nicht nur Textdateien machen.

So ist es. Lange Strings (AnsiString) können bis zu 2 GB an Daten aufnehmen.
Da Gute ist, dass jegliches Zeichen im Bereich 0 bis 255 darin gespeichert werden kann.
(im Gegensatz zu C/C++ wo ja $00 den String abschliesst)
Zitat:

Zitat von qube-us
2.) Enthält das Array "data" die komplette geladene Datei, so dass man mit data[1] auf das erste Byte zugreift?
und mit data[length(data)] auf das letzte

Genau ! Mit Insert und Delete können auch Zeichen gelöscht oder eingefügt werden. (Unit SysUtils)

qube-us 27. Okt 2004 21:48

Re: Datei lesen, erzeugen und abspeichern!
 
Hi, leider komme ich nicht klar mit dem Quellcode!

Ich habe erst versucht die Befehle so zu übernehmen, da es nicht funktionierte habe ich für das Wort "filename" den Dateienname an die Stelle geschrieben einer Datei, die im selben Ordner war, aber es funktioniert immernoch nicht nun komme ich nicht weiter.

Es wäre nett, wenn mit jemand zeigen könnte, wie man genau den Inhalt einer text-Datei in einem Text-Feld laden kann, vielleicht verstehe ich den Rest dann ja.

Da sist ziemlich komisch, wenn ich etwas von leuten erklärt bekomme, so wie das oben der Fall ist komme ich nich tso gut damit klar, aber wenn ich ne funktionierende Projekt-Datei hätte dann gibt's auch keine weiteren Fragen mehr, weil dann auch keine Fehler mehr auftreten können. Falls jemand so fleißig ist und so was machen kann und mir an qube@epost.de schicken könnte, würde ich mich unglaublich freuen, dann hätten nämlich die Missverständnisse ein Ende.

Bis dann!! :thumb:

Christian Seehase 27. Okt 2004 22:35

Re: Datei lesen, erzeugen und abspeichern!
 
Moin qube-us,

Zitat:

Zitat von qube-us
...aber es funktioniert immernoch nicht...

und was funktioniert nicht?

Du hast da oben zwei fertige Prozeduren, die Du nur noch mit dem Dateinamen (gesamter Pfad) und, beim Speichern, mit einen String der die Daten enthält versorgen musst.

qube-us 28. Okt 2004 17:25

Re: Datei lesen, erzeugen und abspeichern!
 
Wenn ich wüßte woran es liegt, könnte ich den Fehler j aselber finden, aber ich habe das alles so übernommen und es funktioniert nicht!!

Mir sinngemäß zu sagen, dass es gehen müsste hilft mir auch nicht weiter.

Zu der Frage was nicht funktioniert kann ich schonmal sagen, dass das komplieren schon nicht geht...dass das daran liegt, dass da dann was falsch ist weiß ich selber....wäre halt deshalb gut wenn ich einfach n fertiges projekt an qube@epost.de geschickt bekommen würde, wenn das ja soooo einfach ist und dann wäre das Problem auch auf einmal aus der Welt geschaftt und es ist echt nicht so, dass ich es nicht mehrfach probiert hätte mit diesem Quellcode irgendwas anzufangen, aber ich bekomms echt ned hin!!!

Machts gut Leute :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.
Seite 1 von 3  1 23      

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