Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ИНДИ10, вопросы по синтаксису клиента


Pcrepair ©   (2011-06-23 21:25:00) 

Добрый день
Есть код процедуры подключения к серверу, отправки запроса серверу, получения файла, записи файла на диск, отображения файла. Все работает. но не совсем понятно как
Если кто в курсе, пожалуйста дайте комментарии

procedure TForm1.B_GetScrClick(Sender: TObject);//ПРОЦ по имени B_GetScrClick (запуск с Форма1.Кнопка - соответсвующая, событию с этим именем)
var //объявление локальной ПЕРЕМ
s:TFileStream; //ПЕРЕМ типа ФайлСтрим (поток для работы с файлами)
Bitmap: TBitmap; //ПЕРЕМ типа Битмап (графический файл типа BMP)
begin
connect_to_server; //вызов ПРОЦ подключения к серверу - это отдельно и тоже работает
IdTCPClient1.IOHandler.WriteLn('get_screen '); //Клиент дает команду серверу GET_SCREEN - запрос на получение графического файла
with IdTCPClient1 do
begin
  if FileExists('C:\s.bmp') then DeleteFile('C:\s.bmp'); //Если на диске существует файл, тогда удалить этот файл
  s := TFileStream.Create('C:\s.bmp',fmCreate); //присвоить ПЕРЕМ значение = создать поток, в потоке создать файл на диске - создание потока и файла на диске
  while connected do //пока подключено к серверу сделать следующее
       IdTCPClient1.IOHandler.ReadStream(s,-1,true); прочитать поток из клиента -ВОТ ТУТ НЕЯСНО
       FreeAndNil(s); //обнулить ПЕРЕМ
       Disconnect; // отключится
       Image1.Picture:=nil; //обнулить картинку
       Bitmap := TBitmap.Create; //создать и присвоить ПЕРЕМ это значение
         try
           Bitmap.LoadFromFile('C:\s.bmp'); //в ПЕРЕМ загрузить дата из файла на диске
           Image1.Picture.Bitmap.Assign(Bitmap); //отобразить дата в Имедж1
         finally
            Bitmap.Free; // обнулить ПЕРЕМ
         end;
end;


Неясно тут - (s,-1,true), что означают эти аргументы и как они влияют на результат работы
s     - это имя ПЕРЕМ?
-1 или 0 - ????
true или false -???

Что то нигде не могу найти, нужно для изучения ДЕЛФИ, конкретно надо заменить TFileStream на TMemoryStream, чтобы избавится от постоянного дерганья изображения при перезаписи файлов на ЖД


Pcrepair   (2011-06-25 20:07:00) [1]

похоже что:
s - имя используемой переменной
-1  - размер куска int64 передаваеного из сервера в клиент, 64 байта данных
true - файл из сервера передается пока не закончится, то есть целиков

кто работал с ИНДИ? все ли верно?

(2) проблема во всем, когда только что то изучаешь
пример кода не привидешь? как будет выглядеть код, когда поток данных из сокета (графический файл бмп) помещается в ОЗУ в виде Глобал ПЕрем, затем берется из ГлобалПерем и отображается на Имидж1


vegarulez   (2011-06-24 23:38:00) [2]

>> s     - это имя ПЕРЕМ?
>> s:TFileStream;


Сергей М.   (2011-06-23 22:18:00) [3]


> конкретно надо заменить TFileStream на TMemoryStream


Ну и ?
В чем проблема-то ?


Игорь Шевченко   (2011-06-23 21:43:00) [4]


> пожалуйста дайте комментарии


комментариев в коде уже много. Лишних.


Наверх

Титульная страница Поиск, карта сайта Написать письмо