Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизЧтение данных из компорта Найти похожие ветки
← →
pavel_guzhanov (2004-07-09 14:25) [0]Подскажите пожалуйста, для чтения данных, пришедших в компорт использую
ReadFile(H,Buf,Size,Total,nil)
Как нужно объявить переменную Buf перед отправкой ее в эту функцию? Может я чтото туплю, но второй день не могу с этим справиться
← →
MBo © (2004-07-09 14:42) [1]например, так -
var Buf:array of byte;
SetLength(Buf,1000);
ReadFile(H,Buf[0],Size,Total,nil)
← →
AndrewVolkov © (2004-07-09 21:06) [2]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
← →
tesseract (2004-07-10 12:51) [3]Динамические массивы по ссылке передавать нельзя! лучше пошли pointer потом в цикле разбирай. или обычный массив с размером заведомо большим полученных данных. я так и поступаю.
← →
MBo © (2004-07-10 12:54) [4]>Динамические массивы по ссылке передавать нельзя!
Да ну?
← →
AndrewVolkov © (2004-07-10 13:49) [5]to tesseract
да не замечал как-то проблем.
А нафига мне каждый раз 10000 к примеру читать, если всего 2 байта к примеру заходит?
← →
AndrewVolkov © (2004-07-10 14:30) [6]to tesseract
точнее не читать, а резервировать
← →
GanibalLector © (2004-07-11 01:38) [7]Вот тебе(счастье):
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;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.034 c