![]() |
Tipp für datei (strings...list..??)
Hallo leute,
Folgendes, ich möchte gerne ein Programm schreiben, das dateien auf crc32 prüfen kann. Ich weiss ja wie ich eine ganz normale text datei öffnen kann, aber eine sfv datei ist volgendermassen aufgebaut: test.rar b9a6aece test.jpg e9aa6eab | | | V file|abstand|crc32 jetzt file öffnen wäre ja kein problem, aber wie kann ich die daten eindeutig ansprechen? also ich habe das so gedacht:
jetzt wie schon gesagt weiss ich nicht wie ich mit diesen "wörtern" umgehen soll... Also lösen würde ich mein problem gerne selber, aber ich brauche einfach einen hilfreichen Tipp wie ich das machen soll. Also soll ich die daten in ein listview oder sowas laden oder gibt es da stringlists mit denen man sowas machen kann? Und das grösste problem wie kann ich die zwei wörter also "filename" und "crc code" auseinander nehmen? da die in der gleichen zeile sind. Bitte um hilfe ... mfg headi |
Re: Tipp für datei (strings...list..??)
kuck dir mal die Hilfe zu TStringList und zu DelimitedText an.
das dürfte dir auf die Sprünge helfen. |
Re: Tipp für datei (strings...list..??)
Zitat:
vielen dank erstmal. Ich hab mir das mal angeschaut, und auch gleich was geschafft, nur jetzt sehe ich schon das erste problem. Und zwar wenn im dateinamen auch ein leerzeichen ist dann ist dies logischerweise auch im delimiter also wird auch auf ne neue Zeile gemacht. Ich denke das könnte ein recht grosses Problem sein. hier mal mein Code:
Delphi-Quellcode:
Achja nochwas, durch den delimiter hab ich ja jetzt einfach jede erste zeile den dateinamen und jede zweite zeile den crc32.
procedure TForm1.Button1Click(Sender: TObject);
var sl: Tstrings; begin if OpenDialog1.Execute then sl:=TStringList.Create; sl.LoadFromFile(OpenDialog1.FileName); sl.Delimiter:=' '; sl.DelimitedText:=sl.Text; ShowMessage(sl.Text); sl.Free; end; wenn ich mit dem jetzt arbeiten möchte, muss ich die aber wieder auseinander bringen am besten wieder nebeneinander. ich hoffe ich bekomme nochmals so einen guten Tipp :thumb: vielen dank mfg headi |
Re: Tipp für datei (strings...list..??)
da es schon relativ spät ist, hab ich das kurz zusammengezimmert (sprich da ist noch optimierungsbedarf). aber fürs erste dürftest du damit weiterkommen:
Delphi-Quellcode:
der Trick ist, dass du SLSub verwendest um an die DelimitedText Eigenschaft ranzukommen (in diesem Fall 2 Felder. [0] = Dateiname, [1] = Hash). In SL sind nach wie vor alle Zeilen der Quell-Datei unverändert vorhanden.
var
I: Integer; SL, SLSub: TStringList; begin if OpenDialog1.Execute then begin SL := TStringList.Create; SL.LoadFromFile(OpenDialog1.FileName); SL.Delimiter := ' '; SLSub := TStringList.Create; for I := 0 to SL.Count - 1 do begin SLSub.DelimitedText := SL[I]; ShowMessage(SLSub[0] + #13#10 + SLSub[1]); end; SLSub.Free; sl.Free; end; Um das Problem mit dem Leerzeichen im Dateinamen zu umgehen, könntest du von hinten das letzte Leerzeichen als Trenner verwenden (dazu siehe AnsiRightStr bzw. Pos). |
Re: Tipp für datei (strings...list..??)
wenn du die JCL installiert hast, dann schau dir mal "strafter" und "strbefore" an :wink:
Dazu musst du die Unit JCLStrings in die Uses Klausel nehmen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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