Einzelnen Beitrag anzeigen

Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.126 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Array of Bytes dynamisch erstellen

  Alt 2. Dez 2020, 23:29
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
  Mit Zitat antworten Zitat