Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#8

AW: Hexwert in Binärdatei suchen und Position ermitteln

  Alt 4. Mär 2018, 11:46
Im Prinzip läuft alles auf einen Byte-Vergleich hinaus.
Delphi-Quellcode:
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[i] <> Suche[i2] then
      Break
    else if i2 = High(Suche) then
      Gefunden(i);
Die innere Schleife kann man z.B. durch CompareMemory ersetzen
und noch an anderen Stellen bissl optimieren, aber im Prinzip macht so ein Such-Code immer das Gleiche.

Delphi-Quellcode:
for i := 0 to Hight(Daten) - High(Suche) do begin
  {$REGION 'umgedrehte Suchlogik sie Antwort #6'}
  B := False;
  for i2 := 0 to High(Suche) do
    if Daten[i] <> Suche[i2] then
      Break
    else if i2 = High(Suche) then
      B := True;
  {$ENDREGION}
  if B then
    Gefunden(i);
end;
Delphi-Quellcode:
for i := 0 to Hight(Daten) - High(Suche) do
  if CompareMemory(@Daten[i], @Suche[0], Length(Suche)) then
    Gefunden(i);
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 4. Mär 2018 um 11:54 Uhr)
  Mit Zitat antworten Zitat