Bug Windows TFileSearcher unter FPC Trunc

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.

Bug Windows TFileSearcher unter FPC Trunc

Beitragvon Michl » 19. Jul 2015, 15:43 Bug Windows TFileSearcher unter FPC Trunc

Ich habe ein Problem mit dem TFileSearcher (genutzt in FindAllFiles und FindAllDirectories) unter Windows7 64bit, Lazarus 1.5 r49558M FPC 3.1.1 i386-win32-win32/win64.

Anbei ein kleines Testprogramm, das zeigt, dass Verzeichnisse mit Umlauten nicht richtig dargestellt werden, bzw. keine Files in diesen Verzeichnissen gesucht werden:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
var
  FS: TFileSearcher;
begin
  Memo1.Clear;
  FS := TFileSearcher.Create;
  FS.OnFileFound := @FileFound;
  Memo1.Lines.Add('Dateien im Programmverzeichnis:');
  FS.Search(ExtractFilePath(ParamStr(0)), AllFilesMask, True);
  Memo1.Lines.Add('');
  Memo1.Lines.Add('Dateien im Unterverzeichnis "Dir_ÄÖÜ":');
  FS.Search(ExtractFilePath(ParamStr(0)) + '\Dir_ÄÖÜ', AllFilesMask, True);
  FS.Free;
end;
 
procedure TForm1.FileFound(FileIterator: TFileIterator);
begin
  Memo1.Lines.Add(FileIterator.FileName);
  writeln(UTF8ToSys(FileIterator.FileName));
end;


Ich habe für mich auch einen kleinen Patch geschrieben, der dieses Fehlverhalten hier beseitigt. Da aber die Konvertierung vom RawbyteString in einen UTF8String ein ziemliches Gewurstel ist, wollte ich fragen, ob jemand eine bessere Lösung hat?!
Code: Alles auswählen
PathInfo.Name := SysToUTF8(UTF8String(PathInfo.Name));

Bsp. und Patch anbei.

Interessieren tät mich auch, wie das Verhalten unter einem anderen OS ist, bzw. was die Konvertierung dort bewirkt.

EDIT: Dateien gelöscht, da sie, falls sie jemanden interessieren, auch vom Bugtracker geladen werden könnten.
Zuletzt geändert von Michl am 19. Jul 2015, 18:33, insgesamt 1-mal geändert.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2330
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon Michl » 19. Jul 2015, 16:41 Re: Bug Windows TFileSearcher

Ich habe selber eine bessere Möglichkeit der Konvertierung gefunden, werde das mal so in den Bugtracker geben. Mal sehen...
Code: Alles auswählen
var
  Dummy: String;   
...
  Dummy := '';
  Insert(PathInfo.Name, Dummy, 1);
  PathInfo.Name := Dummy;   


Edit: http://bugs.freepascal.org/view.php?id=28406
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2330
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

• Themenende •

Zurück zu Lazarus - Bugs



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried