Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск и вывод файлов 
:(
    Опции темы
igorx86
Дата 16.4.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 8.10.2006

Репутация: нет
Всего: нет



Привет всем, уже второй день себе голову ломаю, и немогу понять в чем проблема

У меня на сервере есть код, кот получает список файлов на диске с:\ и посылает клиенту
Код

procedure listfiles();
var
 path:string;
begin
path:='c:\';
   i:=FindFirst(path+'*.*',faAnyFile,SR);
  while i=0 do begin
    sendstr(asocket,'|f'+SR.Name+#9+inttostr(SR.Size)+#9+GetAttribs(SR.Attr));
    i:=FindNext(SR);
  end;//end while
  FindClose(SR);
end;


В клиенте я обрабатываю список полученных файлов:
Код




procedure Tmainform.listfiles();
var
  stemp,swork,name,size,attr:string;
  z:integer;
  lv:Tlistitem;
begin
if (recv(csocket,rbuffer,buf_len,0)>0) then begin
command:=copy(string(rbuffer),1,2);
 param:=copy(string(rbuffer),3,length(rbuffer));
lv:=lw1.Items.Add;
    swork:=param;
    name:=Copy(swork,1,pos(#9,swork)-1);
   delete(swork,1,pos(#9,swork));
   lv.Caption:=name;
   size:=Copy(swork,1,pos(#9,swork)-1);
   delete(swork,1,pos(#9,swork));
   lv.SubItems.Add(size);
   attr:=Copy(swork,1,pos(#13,swork)-1);
   lv.SubItems.Add(attr);
end;



И хочу вывести Имя, размер, Атрибуты в 3 колонки ListView'a, но почемуто выводится тоько часть.

Не могли бы вы подсказать где ошибка?
Заранее благодарен!
PM MAIL   Вверх
_hunter
Дата 16.4.2007, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



ну посмотри отладчиком сначала что приходит (узнаеш толи получалка крыво работает толи разбиралка), потом смотри что получается после каждого copy...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
DYUMON
Дата 16.4.2007, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 17.6.2006
Где: Новосибирск

Репутация: нет
Всего: 3



А какая часть только название файла или половина от списка файлов.


--------------------
Всех программистов надо посадить на целероны, что бы впредь головой думали что пишут.
user posted image
PM MAIL ICQ Skype   Вверх
igorx86
Дата 16.4.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 8.10.2006

Репутация: нет
Всего: нет



Вот так сервер отвечает:
AUTOEXEC.BAT    0    ---a-

BJPrinter    0    d-h--
-

boot.ini    214    --h-s


Bootfont.bin    4952    -rhas

CanoScan    0    d-h--
-rhas

Config.Msi    0    d-h-s
has                                                          <<мусор всякий

CONFIG.SYS    0    ---a-
has                                                                           
                                                                           <<пробелы откудато берутся
cvavreval    0    d----
Documents and Settings    0    d----
Downloaded Videos    0    d----
Downloads    0    d----
d----
WINDOWS    0    d----
work    0    d----


Что сделать на сервере, чтоб он слал список вида:
AUTOEXEC.BAT    0    ---a-
BJPrinter    0    d-h--
boot.ini    214    --h-s
Bootfont.bin    4952    -rhas
CanoScan    0    d-h--
Config.Msi    0    d-h-s 
CONFIG.SYS    0    ---a-
cvavreval    0    d----
Documents and Settings    0    d----
Downloaded Videos    0    d----
Downloads    0    d----
WINDOWS    0    d----
work    0    d----


Это сообщение отредактировал(а) igorx86 - 16.4.2007, 23:35
PM MAIL   Вверх
dumb
Дата 17.4.2007, 14:45 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 3
Всего: 158



igorx86, где объявления rbuffer и buf_len?

основная ошибка в том, что ты не смотришь сколько именно байт прочитано.
надо примерно так:
Код

  rlen := recv(...);
  if rlen > 0 then begin
    s := copy(rbuffer, 1, rlen);
  ...

PM MAIL   Вверх
igorx86
Дата 17.4.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 8.10.2006

Репутация: нет
Всего: нет



buf_len=65535;
rbuffer:array[0..buf_len] of char;

Вот размер буффера, и сам буффер
PM MAIL   Вверх
dumb
Дата 19.4.2007, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 3
Всего: 158



igorx86, добрый тебе совет: не мучайся с сокетами, а используй компоненты Indy.

вторая твоя большая ошибка в вышеприведенном коде - ты полагаешь, что данные будут приходить такими же кусками, как ты их отправлял - это не так. т.е. ты можешь отправить строку с описанием одного файла, а на клиент оно будет приходить кусками, скажем(условно), по 5 байт.

ps. и, кстати, ты привел очень мало кода - нет sendstr(хотя с ней все понятно), не кода, вызывающего listfiles в клиенте...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.3357 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.