Поиск в Linux идеальный, а в Винде проблематичный

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
gc986
незнакомец
Сообщения: 2
Зарегистрирован: 07.07.2010 22:26:57

Поиск в Linux идеальный, а в Винде проблематичный

Сообщение gc986 »

Всем привет!

Написал приложение в Lazarus для Linux и всё работает идеально. Попробовал перекомпилировать код для винды и столкнулся с проблемкой - не получается произвести поиск файла по указанному пути; программа работает если поиск проводить в каталоге программы. А в линуксе-то всё работает!

Кто нибудь знает в чём дело ???

Вод этот код:

procedure GetFileCount(dir : string);
var fs : TSearchRec;
begin
ColFLST:=0;
if FindFirst(dir+'\*.lts',faAnyFile, fs)=0 then // Если заменить на - if FindFirst('*.lts',faAnyFile, fs)=0 then - то ищет в папке программы (вообщем хоть чтото работает :). - - P.S. Путь к папке с файлами задаётся верно.
repeat
inc(ColFLST);
Form1.ListBox1.Items.Add(fs.Name); // Добавляем файл в список
until FindNext(fs)<>0;
SysUtils.FindClose(fs);
end;
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Проблема в кодировке. Используй нечто вроде такого для кроссплатформенного решения

Код: Выделить всё

FindFirst(UTF8ToSys(dir + DirectorySeparator + '*.lts'),faAnyFile, fs)=0
Maxizar
постоялец
Сообщения: 385
Зарегистрирован: 20.03.2010 18:48:14

Сообщение Maxizar »

Код: Выделить всё

  if  (BaseDir='') or (not DirectoryExists(BaseDir)) then Exit; //Ааа нас обманули :)

  Dir := IncludeTrailingPathDelimiter(BaseDir);      //для Win ='\' Linux='/'
  iIndex := FindFirst(Dir+'*.*', faAnyFile, SearchRec);


dir + DirectorySeparator - не безопастно. вдруг dir уже имеет окончание.
Аватара пользователя
gc986
незнакомец
Сообщения: 2
Зарегистрирован: 07.07.2010 22:26:57

Сообщение gc986 »

Спасибо!!! Всё работает !!! :D :D :D
Ответить