Вниз
Скачать: CL | DM;

Такой процедурой вывожу данные из COM порта в Мемо   Найти похожие ветки 

 
iNew ©   (2002-12-11 09:09) [0]

var LineData:string;
procedure TForm1.VaComm1RxChar(Sender: TObject; Count: Integer);
type
CharBuf = array[0..9999] of Char;
var
Buffer: ^CharBuf; Bytes, P: Integer;
begin
GetMem(Buffer, VaComm1.ReadBufUsed);
try
Fillchar(Buffer^, VAComm1.ReadBufUsed, 0);
Bytes := VaComm1.ReadBuf(Buffer^, Count);
if Bytes <> -1 then
begin
for P := 0 to Bytes - 1 do begin
case Buffer^[P] of
#0, #10,#13:
begin
if LineData<>"" then M2.Lines.Add(LineData);
LineData := "";
end
else
begin
LineData := LineData + CharBuf(Buffer^)[P];
end;
end; //case
end; //for do
end;
Application.ProcessMessages;
finally
FreeMem(Buffer);
end;
end;
Эта процедура есть событие на появление данных, но не могу понять почему данные выводятся в МЕМО с задержкой на одну сторку
P.S Использую набор компонент Async.


 
apay ©   (2002-12-11 09:22) [1]

все правильно, как прогу пишешь, так она и пашет.
попробуй:

...
case Buffer^[P] of
#0, #10,#13:
if ( M2.Lines.Count > 0 ) and ( M2.Lines[M2.Lines.Count-1] <> "" ) then M2.Lines.Add("");
else begin
if ( M2.Lines.Count = 0 ) then M2.Lines.Add("");
M2.Lines[M2.Lines.Count-1] := M2.Lines[M2.Lines.Count-1] + CharBuf(Buffer^)[P];
end;
end; //case
...


 
iNew ©   (2002-12-11 09:31) [2]

Всё работает, но получается как-то глючно:
Очень медлено и МЕМО весь мигает при добавлении.


 
iNew ©   (2002-12-11 10:55) [3]

А ещё варианты?


 
iNew ©   (2002-12-15 04:53) [4]

Ну ещё кто-нибудь?


 
Slym   (2002-12-15 06:31) [5]

Ты в мемо сразу не пихай данные: сначала в локальную переменную типа TStringList, а уже потом перед концом процедуры вываливай накопленную инфу


 
iNew ©   (2002-12-16 06:15) [6]

Ну вместо M2.Lines.Add(LineData) сделал MyList.add(LineData),
а в конце в цикле:
for i:=0 to MyList.Count-1 do
begin
M2.Lines.Add(MyList.Strings[i]);
end;
Результат тотже.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-85785
XM-AD
2002-12-05 15:57
2002.12.26
И снова Firebird, dialect 3 - не хочет создавать функцию


1-85977
Эдик Дятлов
2002-12-15 19:07
2002.12.26
Двусвязанные и односвязанные списки


1-85965
Alpine
2002-12-15 17:53
2002.12.26
Как сделать Combobox неменяемым (Read Only) ?


3-85848
samsam
2002-12-05 17:05
2002.12.26
Востановление удаленной записи


1-85969
barmaley
2002-12-15 18:32
2002.12.26
сепарация текста : )




   Наверх