![]() |
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: |
Re: Datei lesen, erzeugen und abspeichern!
Am Besten nutzt du dafür TFileStream. Benutzung siehe OH und dieses Forum.
|
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!!! |
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 ![]() Chris |
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. |
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: |
Re: Datei lesen, erzeugen und abspeichern!
Zitat:
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:
|
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: |
Re: Datei lesen, erzeugen und abspeichern!
Moin qube-us,
Zitat:
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. |
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: |
Re: Datei lesen, erzeugen und abspeichern!
Um rauszufinden, was da falsch liegt, kannst du immernoch die Fehlermeldung nennen, wenn das kompilieren nicht klappt (bei mir gehts).
Was soll dir ein fertiges Projekt nützen, wenn du dann nicht verstehst, warum es auf einmal klappt? Klar, einfacher ist es allemal, sinnvoll eher nicht. Besser ist es, du stellst hier das Projekt rein, was du schon probiert hast und dann können wir sagen, was warum nicht geht. |
Re: Datei lesen, erzeugen und abspeichern!
Die Fehlermeldungen verstehe ich nicht, dagegen verstehe ich ein funktionierendes Programm sehr wohl...ich bin mir sicher es dauerd ewig, bis wir alle fehler behoben haben und es würde anders viel einfscher gehen, aber ich will ja weiter kommen, deshalb zähle ich von mir aus fehler für fehler jedesmal hier auf.
Also erstmal fehlt schon die Deklaration der Klasse TForm1 oder ist fehlerhaft!!! Jetzt sagt mir ned ich müsste die deklarieren... ...so nächster Fehler Variable 'Form1' wurde deklariert aber in 'Unit1' nicht verwendet... Ungenügende Forward- oder Extrenal-Deklaration: 'LoadStringFromFile' Ungenügende Forward- oder Extrenal-Deklaration: 'SaveStringFromFile' so und das geht dann immer so weiter...weil der quellcode eindeutig undvollständig ist...ich brauch einen vollständigen Quellcode, so wie er in einem Projekt enthalten ist und wenn es zu schwer ist mir das mal zu schicken, dann erklärt mir bitte mal was alles in den quellcode rein muss, denn schon alleine die oberfläche ist 100% nich tenthalten in dem was da oben steht, somit kann das auch kein delphi-programm sein, wie ich es kenne... mit Form1 und Unit1 und so nem zeug....steht alles garne da...deshalb bitt eich jetzt mal um eine eindeutige erklärung...wollte eigentlich nur ganz schnell was kleines machen und jetzt sitze ich schon tag ean diesem kindergram!!! :wall: :gruebel: |
Re: Datei lesen, erzeugen und abspeichern!
die Unit die gepostet wurde sollte genau das sein was du brauchst. Diese einfach abspeichern und dann in deinem programm in die "Uses" die Unit "FileStreamUtils" aufnehmen.
im einem ButtonClick-Event kannst du dann mit
Delphi-Quellcode:
den Inhalt von Memo1 (wenn du das auf deinem Formular hast) in die Datie "c:\abs.txt" speichern.
SaveStringToFile('c:\abc.txt', Memo1.Text);
Und eine Datei in das Memo laden kannst du mit
Delphi-Quellcode:
Ohne dir zu nahe treten zu wollen: Dein "Ton" trägt nicht gerade dazu bei das dir jemand helfen will. Desweiteren wurde bisher hier alles eigentlich sehr verständlich erklärt, du solltest eventuell erstmal ein paar Grundlagen von Delphi lernen (ist sachlich und nicht bösartig gemeint). In Delphi muss in einer Unit nicht zwangsläufig immer ein Formular sein.
Memo1.text := LoadStringFromFile('c:\abc.txt');
|
Re: Datei lesen, erzeugen und abspeichern!
Tut mir leid, wenn ich unfreundlich war...hab mich eben n bischen aufgeregt, weil nicht klappt wie ich will, das kann bestimmt jeder nachvollziehen, dass es dadurch hier nicht besser läuft stimmt natürlich...ok ich probiere jetzt mal den neuen Tipp aus!!
Sorry nochmal :thumb: :coder2: |
Es funktioniert jetzt endlich, aber leider lassen sich keine Dateien öffnen, die auf einer Internetseite sind.
Ich würde aber auch gerne direkt Dateien aus dem Internet in mein Delphi-Programm laden können, ohne sie vorher auf der Festplatte speichern zu müssen. Danke schonmal :thumb: |
Re: Datei lesen, erzeugen und abspeichern!
Einben fast kompletten HexEditor, der binäre Dateien zu mindest so anzeigt wie ein HexEditor, gibt es hier auf meiner Seite mit Code:
![]() |
Re: Datei lesen, erzeugen und abspeichern!
dateien direkt aus dem internet öffnen ist nicht möglich wenn du nicht das SMB protokol oder vergleichbares verwendest
du wirst wohl gezwungen sein, die datei, remporär zu speichern und dort zu bearbeiten und danach wieder hochzuladen ( da denk ich jetzt an ftp ) mit dem http protocol wirste da aber wohl am uploaden nich viel gegenliebe verspühren *g* |
Re: Datei lesen, erzeugen und abspeichern!
Was ich eigentlich machen wollen würde ist ein Programm, das alle Dateien aus einem im Internet liegenden Ordners kopiert! Ist das möglich, wenn ja wie?
Ich weiß nämlich nicht einmal, wie man wenn man eine Datei auf der Festplatte hat diese an eine andere Stelle kopiert. Wie geht das? Mein zweites Problem ist, dass mein Programm, das Dateien in Delphi laden kann, keine Dateien erstellen kann, sondern immer in bestehende Dateien reinschreiben muss. Wie kann ich neue Dateien erstellen? Bitte um Hilfe!! Danke schonmal! Hoffe bei drei Fragen kann mindestens eine beantwortet werden. |
Re: Datei lesen, erzeugen und abspeichern!
Neue Frage, Neuer Topic! :dp:
Zum Kopieren gibt es CopyFile. Aus dem Internet herunterladen funktioniert mit URLDownloadToFile (einfach mal die Delphi-Suche bemühen). Ohne weiteres kommst du nicht an alle Dateien in einem Verzeichnis eines Webservers ran. Das funktioniert nur mit FTP und dazu brauchst du Zugangsdaten. Mit TFileStream kannst du auch Dateien erstellen. Statt fmOpen... fmCreate nutzen! |
Re: Datei lesen, erzeugen und abspeichern!
Ich finde "Datei lesen, erzeugen und abspeichern" trifft noch zu!!
|
Re: Datei lesen, erzeugen und abspeichern!
Einfach mal lesen...
![]() Im übrigen müsste man zur Beantwortung deiner Fragen wissen ob es dein Webspace ist, und ob Du vorher weißt wie die Dateien heissen. Ansonsten musst Du noch nen Listing des Webordners bekommen! |
Re: Datei lesen, erzeugen und abspeichern!
Wenn man mal annimmt, ich weiß wie die Dateien heißen und wo sie liegen und dass sie vom Browser aus zu erreichen wären.
Also wie kann ich die dann wo ander speichern? Sagen wir ich habe ein Bild das heißt 1.jpg und dann eins das heißt 2.jpg usw. und ich will nicht jedes einzeln speichern, dann würde ich da irgendsowas machen: der befehl kopierenvonzu oder so for i to 50 do begin kopierenvonzu('http://www.delphipraxis.net/'+inttostr(i)+'.jpg','c:/''+inttostr(i)+'.jpg'); end; |
Re: Datei lesen, erzeugen und abspeichern!
Hast Du Dir die Mühe gemacht den Beitrag von Jim zu lesen?
URLDownloadToFile() hat er erwähnt und da sollteste mal versuchen was selber zu erschließen! Dann kann man auch stolz auf sich sein! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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