![]() |
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? ![]() Danke |
Re: ab best. Offset aus Datei1 in Datei2 kopieren
Streams wären noch eine Möglichkeit.
|
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. ![]() |
Re: ab best. Offset aus Datei1 in Datei2 kopieren
Dateizeiger mit Position setzen und dann CopyFrom.
|
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 |
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:
Grüße vom marabu
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; |
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 ![]() ^^ hier mal der aktualisierte link |
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)
|
Re: ab best. Offset aus Datei1 in Datei2 kopieren
habe jetzt mal das versucht
Delphi-Quellcode:
EDIT: LÄUFT
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; 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? |
Re: ab best. Offset aus Datei1 in Datei2 kopieren
es muss so sein:
Delphi-Quellcode:
du hast das "Create" vergessen, so wie es bei jeder Objectinstanzierung sein muss.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:34 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