Форум: "WinAPI";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
ВнизПочему Icompatible types? Найти похожие ветки
← →
iNew (2003-08-19 04:07) [0]procedure TForm1.MyProc(SourceDir:String);
var lpFD : WIN32_FIND_DATA;
hd : integer;
MyBool : Boolean;
begin
MyBool:=true;
hd:=FindFirstFile(PChar(SourceDir+"\*.*"),lpFd);
try
while MyBool do
begin
if (lpFD.cFileName <> ".") and(lpFD.cFileName <> "..") then
begin
if lpFD.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY = 0 then
begin
...............
ListBox1.Items.Append(lpFD.cFileName);
end
else
begin
...............................
MyProc(SourceDir+"\"+lpFD.cFileName)
end;
end;
MyBool:=FindNextFile(hd,lpFD);
end;
finally
Windows.FindClose(hd);
end;
end;
Почему в строке
if (lpFD.cFileName <> ".") and(lpFD.cFileName <> "..")
отладчик говорит Icompatible types, хотя если сделать так:
var Str1,Str2 : String;
begin
Str1:=".";
Str2:="..";
if (lpFD.cFileName <> Str1) and(lpFD.cFileName <> Str2)
то всё нормально.
Да и вообще правильно ли сделан рекурсивный обход каталогов?
← →
Игорь Шевченко (2003-08-19 09:08) [1]Потому что WIN32_FIND_DATA.cFileName объявлена не как String а как array of char.
#ifdef FLAME
До каких пор народ будет просить других поработать в качестве компилятора, блин! Что мешает САМОМУ посмотреть объявление нужных структур в исходниках или по справке ?
Уважайте чужое время, плз
#endif
← →
iNew (2003-08-19 09:15) [2]> Игорь Шевченко
>Потому что WIN32_FIND_DATA.cFileName объявлена не как String а >как array of char.
Это я действительно посмотрел в справке. Меня просто интересует чем отличается
if (lpFD.cFileName <> Str1) and(lpFD.cFileName <> Str2) от
if (lpFD.cFileName <> ".") and(lpFD.cFileName <> "..")
ведь str1 это и есть "."
P.S. >Игорь Шевченко. Если жалко времени можно не отвечать :(
← →
default (2003-08-19 09:29) [3]глазей в окно CPU в таких случаях
может тебе откроется истина
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.23;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.01 c