Ich programmiere unter Linux und auch Windows. Häufig probiere ich (auf dem Heim-Laptop) unter Linux etwas aus, das dann unter Windows im Büro laufen soll. Jetzt bin ich auf etwas gestoßen, was ich mir nicht erklären kann und für das ich Hilfe brauche.
Ich will Daten verarbeiten, die in ASCII-Dateien gesammelt werden und die jeweils in eigenen Ordnern (zu sog. Loadcases) zusammengefasst werden. Um davon mehrere quasi als Batch zu verarbeiten kommen diese wiederum in einen übergeordnetten Data-Ordner.
Ich lese nun alle Ordner (d.h. zunächst die Namen) dieses Data-Folders ein /gespeichert in einer TStringList. Das geschieht mit der folgenden Routine:
Code: Alles auswählen
 if SelectDirectoryDialog1.Execute then
  begin
    LoadcasesDirs := TStringList.Create;
    try
      MasterDir := IncludeTrailingPathDelimiter(SelectDirectoryDialog1.Files[0]);
      BatchJobFrm.MasterDirEdt.Text := MasterDir;
      LoadcasesDirs := FindAllDirectories(MasterDir,False,PathDelim);
      Logger.LogMsg(llDebug,Format('   ----- %d loadcases/directories found',
        [LoadcasesDirs.Count]));
      BatchJobFrm.FillList(LoadcasesDirs);
    finally
      LoadcasesDirs.Free;
    end;
  end;
D.h. genau genommen funktioniert es unter Linux hervorragend. Beim Transfer auf meinen Windows-11-Rechner im Büro sehe ich in der StringList auf einmal die zusätzlichen Ordner/Einträge:
- $RECYCLE.BIN
- KRo-Projects (das ist der Basis-Ordner auf Laufwerk D:, in dem sich die Lazarus-Projekte befinden)
- System Volume Information
Die sind definitiv nicht im Data-Verzeichnis vorhanden (zumindest werden sie mir nicht im Explorer oder Total-Commander angezeigt).
Das Windows 11 ist ganz frisch; das gilt fpr den rechner als auch für mich (unter Windows 10 war mir das nicht aufgefallen).
Weiß hier jemand, woran dieses Verhalten liegt (eventuell am FindAllDirectories) und wie kann ich das am geschicktesten verhindern. Wie gesagt, unter Linux tut alles, wie es soll.
Dankbar für jede Anregung,
Photor

 
  
 



 Verein
Verein 
 Links
Links Suche
Suche