Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ab best. Offset aus Datei1 in Datei2 kopieren (https://www.delphipraxis.net/49403-ab-best-offset-aus-datei1-datei2-kopieren.html)

Coder 10. Jul 2005 23:26


ab best. Offset aus Datei1 in Datei2 kopieren
 
Ich möchte aus Datei1 in Datei2 kopieren.

aber ab einem bestimmten Offset aus Datei1.
Datei2 neu erstellen.

Ich habe mal versucht das mit Seek,Blockwrite usw. zu machen [siehe Link].
Aber das scheint mir nicht sinnvoll.

Kann man das eleganter lösen?

http://alcodream.al.funpic.de/dhelp_10-7/

Danke

Luckie 10. Jul 2005 23:34

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
Streams wären noch eine Möglichkeit.

Coder 10. Jul 2005 23:44

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
mhh, ja...
wenn ich nur wüßte, wie...
Blockwrite scheint einfacher..
Aber auch nur für nichtkomplexe Dinge..

hab gar keine Vorstellung, wie das mit streams aussieht
hab nur 1 Beispiel gefunden, daß mir aber auch nicht viel sagt - also wie ich das anpassen könnte...
ich möchte ja aus einer in eine andere Datei kopieren.
nicht nur an die selbe anhängen.
http://www.delphipraxis.net/internal...en+tfilestream

Luckie 10. Jul 2005 23:47

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
Dateizeiger mit Position setzen und dann CopyFrom.

Coder 10. Jul 2005 23:52

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
mhh
ich weiß auch nicht..
in den Delphi-Büchern stehen immer so schöne Beispiele. ("Kopieren Sie 1 Datei in eine andere"
unit unit1
procedure bla();
copy stream1, stream12;
end;
)
mhh, und wenn ich das auf meine Programme anwende funktioniert es nicht

marabu 11. Jul 2005 07:06

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
Du musst nur die Dateinamen fnSource und fnTarget und die Anzahl der zu übergehenden Bytes in iPosition festlegen und los geht's:

Delphi-Quellcode:
fsSource := TFileStream.Create(fnSource, fmOpenRead);
fsTarget := TFileStream.Create(fnTarget, fmCreate);

// Diese 2 Zeilen meinte Luckie...
fsSource.Position := iPosition;
fsTarget.CopyFrom(fsSource, fsSource.Size - iPosition);

fsTarget.Free;
fsSource.Free;
Grüße vom marabu

Coder 11. Jul 2005 07:09

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
so, habe mal versucht, das mit den Streams etwas umzuschreiben.

Aber laufen tut es nicht.
vor allem die Speicheranforderung.

source-Codelink http://alcodream.al.funpic.de/dhelp_10-7/

^^ hier mal der aktualisierte link

SirThornberry 11. Jul 2005 08:49

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
in deinem Beispiel ist buffer 1 Byte groß, das heißt du kopierst auch nur ein Byte. Desweiteren hast du in dem Beispiel nicht das gepostet umgesetzt sondern das gepostete zu 50% mit deinem ersten Source vermischt, und da kanns halt nicht funkionieren. (zum Beispiel hast du nirgends das CopyFrom)

Coder 11. Jul 2005 08:57

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
habe jetzt mal das versucht

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a,b: TFileStream;
Offset : cardinal;
begin

offset := Strtoint(Edit3.Text);

a := TFileStream.Create('Datei.dat', fmOpenRead);
b := TFileStream.create('datei2.dat', fmCreate);
b.CopyFrom(a, offset);

a.Free; b.Free;

End;
EDIT: LÄUFT
gnarf - manche Dinge sind in Delphi so einfach.
Aber streams gehören irgendwie nicht dazu.
Hab von Walter Doberenz "Borl. Delphi 6 Grundlagen" (ok, hab nur Delphi 3 Pro, aber dennoch)
is ein dickes Buch, aber irgendwie sind Streams da auch nicht ganz so toll erklärt.

welches Buch fandet Ihr denn toll?

SirThornberry 11. Jul 2005 08:59

Re: ab best. Offset aus Datei1 in Datei2 kopieren
 
es muss so sein:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a,b: TFileStream;
Offset : cardinal;
begin

offset := Strtoint(Edit3.Text);

a := TFileStream.Create('Datei.dat', fmOpenRead);
b := TFileStream.Create('datei2.dat', fmCreate);
b.CopyFrom(a, offset);
a.Free; b.Free;

End;
du hast das "Create" vergessen, so wie es bei jeder Objectinstanzierung sein muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 Uhr.
Seite 1 von 2  1 2      

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