Forum: Programmieren allgemein
Delphi
by himitsu,
4. Mär 2018
Alles im Speicher ist einfacher. (mehr als 500 MB werden seine Dateien wohl nicht sein)
Beim stückchenweisem Einlesen muß man beachten, dass Übergreifend gesucht werden muß, also eine Hälfte der Suchdaten kann in einem Block sein und der Rest im nachfolgenden Block.
Forum: Programmieren allgemein
Delphi
by himitsu,
4. Mär 2018
Bei TMemoryStream kann man auch direkt auf die Daten zugreifen.
TMemoryStream.Memory
Und in diesem Fall hilft auch noch ein kleiner Cast:
PByte(MemoryStream.Memory)
PByte(MemoryStream.Memory) // die Dereferenzierung ist implizit, aber man kann auch PByte(MemoryStream.Memory)^
(PByte(MemoryStream.Memory) + i)^ // oder mit Pointer-Arithmetic
Forum: Programmieren allgemein
Delphi
by himitsu,
4. Mär 2018
Im Prinzip läuft alles auf einen Byte-Vergleich hinaus.
var
Daten, Suche: TBytes;
i, i2: Integer;
B: Boolean;
for i := 0 to Hight(Daten) - High(Suche) do // for i := 0 to Hight(Daten) - (Length(Suche) - 1) do
for i2 := 0 to High(Suche) do
if Daten <> Suche then
Break