Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Datei in Datei schreiben (https://www.delphipraxis.net/82520-datei-datei-schreiben.html)

Zead 14. Dez 2006 23:14


Datei in Datei schreiben
 
Hallo,

ich schreibe grad ein Programm, was ausgewählte Dateien(egal was für welche) in eine einzelne Datei schreibt.

Mein Problem dabei ist, dass die geschriebene Datei nur einen Teil der Originaldatei enthält.
Der geschriebene Text enthält zwar komplette Zeilen der Originaldatei, aber überwiegend sind Zeilen abgeschnitten oder die meisten gar nicht da.

Wenn ich eine Datei mit 250kb auslese und neu schreibe, ist die neue nur ca. 36kb groß.
Nehme ich zwei Dateien mit 250kb dann ist die geschriebene Datei ca 43kb groß.

Hier meine lese und schreiberoutine:

Delphi-Quellcode:
        assignfile(paket2,grafikass.Edit1.Text);
        rewrite(paket2);
        for i := 0 to grafikass.ListBox1.Count - 1 do
         begin
           assignfile(paket,grafikass.ListBox1.Items[i]);
           reset(paket);
           repeat
             readln(paket,z);
             writeln(paket2,z);
           until EOF(paket);
           closefile(paket);
         end;
        closefile(paket2);

die Variable z in der ich jede Zeile schreibe ist ein Ansistring. Der sollte eigentlich groß genug sein um eine einzelne Zeile zu speichern denke ich.

[edit=alcaeus]Delphi-Tags hinzugefuegt. In Zukunft bitte selbst tun ;) Mfg, alcaeus[/edit]

Sunlight7 14. Dez 2006 23:37

Re: Datei in Datei schreiben
 
Hallo Zead und herzlich Willkommen in der DP! :cheers:

Das Problem ist, das Du Binär Daten als Text behandelst, mein ich mal. :gruebel:

Um Binär in Dateien zu lesen, bzw. zu schreiben empfiehlt sich Hier im Forum suchenBlockRead & Hier im Forum suchenBlockWrite.
In der OH von Deinem Delphi findest Du ein Beispiel zu BlockRead :wink:

Alternativ kannst Du auch Hier im Forum suchenTFileStream verwenden.
Grüßle! :dp:

PS: Verwende bitte die Delphi Tags für den Code, damit man das besser lesen kann. :wink:

DP-Maintenance 15. Dez 2006 09:00

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

DP-Maintenance 15. Dez 2006 09:00

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Object-Pascal / Delphi-Language" nach "Sonstige Fragen zu Delphi" verschoben.
Delphifragen gehören auch in Delphisparten, oder...?

Flo85 15. Dez 2006 10:13

Re: Datei in Datei schreiben
 
Hallo!

Das liegt daran das in deinen dateien zeichen drinn sind die bei Textdateien als zeilenende oder Dateiende angesehen werden.

bei ganz normalen textdazeien würde es so klappen wie du dir das gedacht hast.
Zitat:

Zitat von Sunlight7
Um Binär in Dateien zu lesen, bzw. zu schreiben empfiehlt sich Hier im Forum suchenBlockRead & Hier im Forum suchenBlockWrite.


Zead 16. Dez 2006 22:55

Re: Datei in Datei schreiben
 
Ok..ich werd das mal ausprobieren.
Danke für eure Hilfe!

Bernhard Geyer 17. Dez 2006 08:55

Re: Datei in Datei schreiben
 
Zitat:

Zitat von Zead
ich schreibe grad ein Programm, was ausgewählte Dateien(egal was für welche) in eine einzelne Datei schreibt.

Zwischenfrage: Wieso nimmst Du keine fertige Kompos für ZIP-Komprimierung. Damit bekommst Du auch eine Komprimierung und Checksumme des Archivs "geschenkt"?

Zead 17. Dez 2006 15:09

Re: Datei in Datei schreiben
 
klar...aber ich will die zusammengeschriebene Datei später weiterverwenden und zusätzliche Informationen in ihr speichern. Mit ner Zip müsste ich die inner extra Datei speicher die entpacken und dann zusätzlich auch noch wieder auslesen.
Wenn ich an den Informationen was ändere muss ich das ganze Zip-Archiv umständlicherweise neu schreiben.

Bernhard Geyer 17. Dez 2006 20:15

Re: Datei in Datei schreiben
 
Falls ein paar € kosten darf wäre das evtl. was für dich: Solid FileSystem

Thorben_K 17. Dez 2006 20:21

Re: Datei in Datei schreiben
 
ich weise allerdings drauf hin, das wenn die date leer ist, du trotzdem einmal einliest

nimm statt repeat until lieber While not eof


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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