AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Warum funktioniert das nicht? Suchen in einer Datei...
Thema durchsuchen
Ansicht
Themen-Optionen

Warum funktioniert das nicht? Suchen in einer Datei...

Ein Thema von BBoy · begonnen am 17. Jul 2013 · letzter Beitrag vom 18. Jul 2013
Antwort Antwort
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#1

AW: Warum funktioniert das nicht? Suchen in einer Datei...

  Alt 17. Jul 2013, 16:53
Danke!

habe es jetzt so umgesetzt: Aber wie kann ich darin suchen nach z.B. "text" oder FFD234E1 ?

Delphi-Quellcode:
var
Stream: TFileStream;
Buffer: array of byte;
TempStr: string;
i: Integer;
begin
  Memo1.Clear;
  Stream := TFileStream.Create('1.tcq', fmOpenRead);
  SetLength(Buffer, stream.Size);
  try
    Stream.Read(Buffer[0], SizeOf(Buffer));
  finally
    Stream.Free;
  end;
  memo1.Lines.Add(inttohex(buffer[0],2));
end;

Geändert von BBoy (17. Jul 2013 um 17:30 Uhr)
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#2

AW: Warum funktioniert das nicht? Suchen in einer Datei...

  Alt 17. Jul 2013, 18:54
Ich habe das nun mal so versucht aber komischerweise kann man nur die ersten 4 byte anzeigen lassen.
Delphi-Quellcode:
var
Stream: TFileStream;
i: Integer;
bsize : int64;
begin
  Memo1.Clear;
  Stream := TFileStream.Create('1.tcj', fmOpenRead);
  bsize := stream.Size;
  SetLength(Buffer, bsize);
  Stream.Read(Buffer[0], SizeOf(Buffer));
  // Nur zum test
  memo1.Lines.Add(inttohex(buffer[0],2));
  memo1.Lines.Add(inttohex(buffer[1],2));
  memo1.Lines.Add(inttohex(buffer[2],2));
  memo1.Lines.Add(inttohex(buffer[3],2));
  memo1.Lines.Add(inttohex(buffer[4],2));
  memo1.Lines.Add(inttohex(buffer[5],2));
  memo1.Lines.Add(inttohex(buffer[6],2));
  memo1.Lines.Add(inttohex(buffer[7],2));
  memo1.Lines.Add(inttohex(buffer[8],2));
  memo1.Lines.Add(inttohex(buffer[9],2));
  memo1.Lines.Add(inttohex(buffer[10],2));
  memo1.Lines.Add(inttohex(buffer[11],2));

  for i := 0 to bsize do begin
    if (buffer[i]=$43) and (buffer[i+1]=$37) and (buffer[i]=$F2) then begin // diese Daten kommen definitiv vor in der Datei!!
      memo1.Lines.Add('--'); // dient nur als kontrolle ob was gefunden wurde
    end;
  end;
  label1.Caption := inttostr(i);
  Stream.Free;
end;
Das oben dient nur zum testen. Das Ergebnis:
02
0A
53
59
00
00
00
00
00
00
00
00
Es sind aber keine 00 sondern andere Werte in der Datei.
Mit der Ausgabe im Label habe ich getestet ob die gesamte Datei mit der schleife durchlaufen wird. das wird sie! Verstehe das nicht.

wäre echt nett wenn mir jemand weiter helfen könnte. Event. auch mit Code. Danke!!
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#3

AW: Warum funktioniert das nicht? Suchen in einer Datei...

  Alt 17. Jul 2013, 21:03
Hallo,

Zitat:
[...] komischerweise kann man nur die ersten 4 byte anzeigen lassen
Na, wenn Du nur die ersten vier Byte einließt, dann können kaum mehr gültige Werte in Deinem Array stehen
Zitat:
Es sind aber keine 00 sondern andere Werte in der Datei
In der Datei schon - in Deinem Array stehen die Nullen aber schon drin (SetLength).

Stream.Read(Buffer[0], SizeOf(Buffer)); // SizeOf(Buffer) = 4 !!!
Mach es vielleicht mal so:
Stream.Read(Buffer[0], Length (Buffer));

Zitat:
if (buffer[i]=$43) and (buffer[i+1]=$37) and (buffer[i]=$F2) then begin // diese Daten kommen definitiv vor in der Datei!!
Sicher nicht!! Kuck mal genau hin.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
BBoy

Registriert seit: 17. Jan 2007
418 Beiträge
 
Delphi 10 Seattle Professional
 
#4

AW: Warum funktioniert das nicht? Suchen in einer Datei...

  Alt 18. Jul 2013, 05:53
Hallo,
Stream.Read(Buffer[0], SizeOf(Buffer)); // SizeOf(Buffer) = 4 !!! Mach es vielleicht mal so:
Stream.Read(Buffer[0], Length (Buffer)); Gruß
Wie doof von mir. Nun funktioniert es.
Danke!
Aber warum ist SizeOf(Buffer) = 4 ?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Warum funktioniert das nicht? Suchen in einer Datei...

  Alt 18. Jul 2013, 07:01
Weil das die Größe der Datenstruktur zur Verwaltung ist. Und das ist ein 32-bit Pointer = 4 Bytes.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:23 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