Показать сообщение отдельно
  #17  
Старый 11.07.2011, 00:42
Kingcss Kingcss вне форума
Начинающий
 
Регистрация: 20.12.2010
Адрес: Иваново
Сообщения: 100
Версия Delphi: Delphi 7
Репутация: 519
По умолчанию

Вот еще проблемка появилась, при создании файлового менеджера.
Вообщем задача: передать названия файлов и папок в нужной мне директории с одного компа и вывести это дело в ListView на другом.
Делаю так:
на обоих компах:
PHP код:
type 
FM
= packed record 
name
:string; 
size:integer; 
folder:boolean; 
end; 
на сервере(который отправляет):
PHP код:
var 
fail:array[0..50] of FM; 

procedure TForm1.SendFileList(path:string); 
var 
sr: TSearchRec; 
p:integer; 
begin 
p
:=0;{Собираю названия папок и файлов в в массив fail 
 
if FindFirst(path+'*.*', faAnyFile, sr) = 0 then 
  begin 
  repeat 
   fail
[p].name:=SR.Name; 
   if (
SR.Attr = faDirectory) then 
   fail
[p].folder:=true; 
   
Inc(p); 
  
until FindNext(sr) <> 0; 
  
FindClose(sr); 
 
end; 
//FsSs.Socket.Connections[0].SendText(inttostr(p-1)+'#');{Отправляю количество файлов и папок в директории, пишет что 24, хотя в реале их 20, включая скрытые файлы} 
FsSs.Socket.Connections[0].SendBuf(fail,sizeof(fail));{Отправляю массив} 
end; 
Далее код клиента:
PHP код:
procedure TForm3.FsCsRead(Sender: TObject; Socket: TCustomWinSocket); 
var 
FileSystem: array[0..50] of FM; 
ListItem: TListItem; 
KolElem:integer; 
i:integer; 
s:string; 
size:integer; 
begin 
s
:=Socket.ReceiveText; 
KolElem:=strtoint(copy(s,0,pos('#',s)-1)); {принимаю количество элементов} 
size:=Socket.ReceiveLength; 
Socket.ReceiveBuf(FileSystem,size); 
for 
i:=0 to KolElem-1 do begin{заношу данные в ListView} 
ListItem:=ListView1.Items.Add; 
ListItem.Caption:=FileSystem[i].name; 
ListItem.SubItems.Add(inttostr(FileSystem[i].size)); 
if 
FileSystem[i].folder = true then ListItem.SubItems.Add('Папка') 
else 
ListItem.SubItems.Add(' '); 
end; 
end; 
Ничего не передается, только в листвиев добавляется размер, который он непонятно откуда берет, т.к. я его не забивал, там должно быть нулевое значение.
Подскажите где ошибка и как исправить.
Ответить с цитированием