Hallo Mavarik,
ich möchte gern ein Binär Datei Blockweise ( z.B erster Block von 22ten Byte bis 200ten Byte und nächster Block zwichen 220 - 816ten Bytes usw..) splitten und in einen
DB (Firebird) abspeichern und später je nach Bedarf die ausgewählte Blöcke wieder zusammen in eine Binär Datei schreiben. Die Start-und- Endbytes der Blöcke werden vorher aus Binär gerechnet
Alles habe ich bereits im Jahr 2001 in Visual Basic 6 und MDB Datenbank realisiert. Quellcode kann ich zur Verfügung stellen.
Delphi für mich relativ neu ist daher habe ich Probleme.....
OK...
Also abgesehen davon, dass ich das in einem Blobfeld dann speichern würde... Ich gehe davon aus, dass es sich bei den Bin-Daten um Strings handelt?
Also Du hast also fixe Start-Positionen und fixe Längen vorberechnet?
Nach dem Motto... Start 22 Len 188 Start 220 Länge x...
Also sagen wir mal Du hat einen Record:
Delphi-Quellcode:
Type
Parts = Record
Start : Integer;
Len : Integer;
end;
PartsList : TArray<Parts>; // oder mit altem Delphi Array of Parts;
var
MS : TMemoryStream;
S : AnsiString;
i : Integer;
begin
FillPartsList(PartsList);
MS := TMemoryStream.Create;
try
MS.LoadFromFile('Bindaten.Dat');
for i:=0 to high(PartsList) do
begin
Setlength(S,PartList[i].Len);
MS.Position := PartsList[i].Start;
Move(MS.Memory^,S[1],PartList[i].Len);
WriteToFirebird(S);
end;
finally
MS.Free;
end;
end.
So zum Beispiel...
Eine von unzähligen Möglichkeiten...
Mavarik