Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Вниз

Такой процедурой вывожу данные из 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 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.006 c
7-86199
Andrew aka Skull
2002-10-22 12:05
2002.12.26
Список процессов по программам


14-86138
makt_liCh
2002-12-06 10:50
2002.12.26
Тут как-то был вопрос про сущность хакера, я решил ответить.


1-86030
SemFLY
2002-12-16 08:21
2002.12.26
Delphi 7...проблемы... :-(


1-85993
Lihachev
2002-12-12 16:14
2002.12.26
Как сохранить в форме динамически созданный компанент?


4-86233
Yegor Derevenets
2002-11-10 20:58
2002.12.26
Звук в телефонную линию





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский