Показать сообщение отдельно
  #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..50of FM

procedure TForm1.SendFileList(path:string); 
var 
srTSearchRec
p:integer
begin 
p
:=0;{Собираю названия папок и файлов в в массив fail 
 
if FindFirst(path+'*.*'faAnyFilesr) = 0 then 
  begin 
  repeat 
   fail
[p].name:=SR.Name
   if (
SR.Attr faDirectorythen 
   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(SenderTObjectSocketTCustomWinSocket); 
var 
FileSystem: array[0..50of FM
ListItemTListItem
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-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
Ничего не передается, только в листвиев добавляется размер, который он непонятно откуда берет, т.к. я его не забивал, там должно быть нулевое значение.
Подскажите где ошибка и как исправить.
Ответить с цитированием