Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Tipp für datei (strings...list..??) (https://www.delphipraxis.net/59334-tipp-fuer-datei-strings-list.html)

Headi 20. Dez 2005 20:40


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:
  • sfv datei wählen
  • erster dateiname/datei wird überprüft ob vorhanden
  • wenn vorhanden wird crc32 check durchgeführt
  • dann wird der zweite wert genommen und mit dem ergebniss verglichen
  • wenn gleich dann crcOK wenn ungleich crcFehler

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

dahead 20. Dez 2005 20:54

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.

Headi 20. Dez 2005 22:37

Re: Tipp für datei (strings...list..??)
 
Zitat:

Zitat von dahead
kuck dir mal die Hilfe zu TStringList und zu DelimitedText an.
das dürfte dir auf die Sprünge helfen.

hi dahead,

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:
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;
Achja nochwas, durch den delimiter hab ich ja jetzt einfach jede erste zeile den dateinamen und jede zweite zeile den crc32.
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

dahead 20. Dez 2005 23:31

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:
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;
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.

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).

TKC 21. Dez 2005 04:34

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 23:39 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz