Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ListView -> FileExists -> Checked (https://www.delphipraxis.net/4430-listview-fileexists-checked.html)

sharkx 28. Apr 2003 22:23


ListView -> FileExists -> Checked
 
Hallo :>

Ich habe Folgendes Problem:

ich lade in eine ListView den Inhalt einer Datei. In dieser Datei stehen Dateinamen und deren CRC32 Wert. Nun Prüfe ich wenn die Datei geladen wird, ob die Dateien die in dieser sogenannten SFV file stehen auch in diesem DIR gibt, so adde ich diese mit der FileSize in das ListView.
ist die File aber nicht da, schreib ich in das ListView als SubItem 'not found'
Nun Sollen auch alle gefundenen Files auch gleichzeitig die CheckBox aktiviert werden. jedoch scheitert da mein Source (ohne jegliche Fehlermeldung) ...

Delphi-Quellcode:
procedure TForm1.Open1Click(Sender: TObject);
var
  sfvfile: TStrings;
  filen: string;
  i: integer;
  item: TListitem;
begin
  if opendialog1.Execute then
  begin
  // ListView Clearen und Status auf 0 setzen
    ListView1.Items.Clear;
    ClearStatus;
  // SFV File auslesen
    sfvfile := TStringList.Create;
    sfvfile.LoadFromFile(opendialog1.FileName);

    for i := 0 to sfvfile.Count - 1 do
    begin
  // Kommentare überspringen
      if (Pos(';', sfvfile.Strings[i]) = 1) or (Pos(' ', sfvfile.Strings[i]) = 1) then
        continue;
      filen := Copy(sfvfile.Strings[i], 1,Pos(' ', sfvfile.Strings[i]) - 1);

  // Existiert Datei -> Subitem[size] - Dateigroesse -> Checke Listeneintrag
      if fileexists(filen) then
      begin
        item := Listview1.Items.Add;
        item.SubItems.Add(filen);
        item.SubItems.Add(IntToStr(GetFileSize(filen)));
        filen := sfvfile.Strings[i];
        Delete(filen, 1,Pos(' ', sfvfile.Strings[i]));
        filen := Trim(filen);
        item.SubItems.Add(filen);
        item.SubItems.Add(''); // do not remove !!!
        ListView1.Items.Item[item.index].Checked := fileexists(filen);
      end
  // Existiert datei NICHT -> Subitem[size] - not found
      else
      begin
        if length(filen) = 0 then continue;
        item := Listview1.Items.Add;
        item.SubItems.Add(filen);
        item.SubItems.Add('not found');
        item.SubItems.Add(''); // do not remove !!!
        item.SubItems.Add(''); // do not remove !!!
      end;
    end;
  // SFV File freigeben | Start Button enablen | Alle Not Found Files zählen
    sfvfile.Free;
    Start1.Enabled := True;
    Label3.Caption := IntToStr(NotFound(ListView1)) + ' Not Found';
  end;
end;
[edit=Daniel B]Delphi-Tags ergänzt. MFG Daniel B.[/edit]

Specialwork 28. Apr 2003 22:35

Hallo sharkx,

Die einfachste Erklärung könnte sein, dass Du die TListview-Eigenschaft CheckBoxes auf false stehen hast.

Gruß, Tom

sharkx 28. Apr 2003 22:36

Per Hand kann ich die CheckBoxes ja aktivieren, nur in der Proecdur selbst nicht :/

CheckBoxes steht auf True!

Specialwork 28. Apr 2003 22:55

Hallo sharkx,

Delphi-Quellcode:
GetFileSize(hFile: Cardinal: lpFileSizeHigh: Pointer): Cardinal;
Du übergibst der Funktion GetFileSize nur einen Parameter des falschen Typs !?

Delphi 6 Professional

Gruß, Tom

sharkx 28. Apr 2003 23:11

hmm, noe .. GetFileSize funktioniert 1a.
Es funktioniert alles bis auf das checked = true der gefundenen files

Specialwork 28. Apr 2003 23:19

Liste der Anhänge anzeigen (Anzahl: 1)
Komisch ist das schon,

hast Du evtl. eine eigene GetFileSize Methode geschrieben.

Gruß, Tom

Ich hab Dir mal ne kleine App gebastelt !

sharkx 28. Apr 2003 23:35

Die Function GetFileSize:

Delphi-Quellcode:
function TForm1.GetFileSize(Filename: string): integer;
var
  SR: TSearchRec;
begin
  if FindFirst(Filename, faAnyFile, SR) = 0 then
  begin
    Result := SR.Size;
  end
  else
  begin
    Result := -1;
  end;
  FindClose(SR);
end;
Vielen dank für des kleine Programm :>

[edit=Daniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 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