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

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

Чтение данных из компорта [D7, WinXP]


pavel_guzhanov ©   (2004-07-09 14:25:00) 

Подскажите пожалуйста, для чтения данных, пришедших в компорт использую
ReadFile(H,Buf,Size,Total,nil)
Как нужно объявить переменную Buf перед отправкой ее в эту функцию? Может я чтото туплю, но второй день не могу с этим справиться


GanibalLector   (2004-07-11 01:38:00) [1]

Вот тебе(счастье):


function ReadComm(Handle:THandle; var Bfr:AnsiString):Integer;
var
 I,J:DWord;
begin
 Result:=0;
 J:=Length(Bfr);
 repeat
   ReadFile(Handle, Bfr[Result+1], J-DWord(Result), I, nil);
   Inc(Result,Integer(I));
  if DWord(Result)=J then break;
 until I=0;
end;


AndrewVolkov   (2004-07-10 14:30:00) [2]

to tesseract
точнее не читать, а резервировать


AndrewVolkov   (2004-07-10 13:49:00) [3]

to tesseract
да не замечал как-то проблем.
А нафига мне каждый раз 10000 к примеру читать, если всего 2 байта к примеру заходит?


MBo   (2004-07-10 12:54:00) [4]

>Динамические массивы по ссылке передавать нельзя!
Да ну?


tesseract   (2004-07-10 12:51:00) [5]

Динамические массивы по ссылке передавать нельзя! лучше пошли pointer потом в цикле разбирай. или обычный массив с размером заведомо большим полученных данных. я так и поступаю.


AndrewVolkov   (2004-07-09 21:06:00) [6]

Var
   Stat : TComStat;
   Resive:array of char;
   Kols:Integer;
   CommHandle : integer;
   Ovr : TOverlapped;
...
ClearCommError(CommHandle,Errs,@Stat);//Sbrasivajem flag
Kols :=Stat.cbInQue;//uznajem kol-vo bajt voshedshih v port
SetLength(Resive, Kols);//vistavljajem dlinu
ReadFile(CommHandle,Resive[0],Kols,Kols,@Ovr);//Chitajem

Commhandle//handle porta

Da vot vrodje i vsja premudrostj


MBo   (2004-07-09 14:42:00) [7]

например, так -
var Buf:array of byte;

SetLength(Buf,1000);
ReadFile(H,Buf[0],Size,Total,nil)


Наверх

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