Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.07;
Скачать: CL | DM;

Вниз

Кто знает, почему при выгрузке ДИНАМИЧЕСКОГО МОССИВА в COM port,   Найти похожие ветки 

 
Лёша   (2003-04-25 16:36) [0]

в порт вместо данных прёт кача мусора?


 
MBo ©   (2003-04-25 16:39) [1]

код?


 
Digitman ©   (2003-04-25 16:40) [2]

порт-то здесь причем ? скорей всего, фактические параметры, подставляемые тобой в ф-цию "выгрузки" не соответствуют формальным по типу ... это достаточно распространенная ошибка при передаче в кач-ве факт.параметра дин.массива (та, где требуется адрес буфера)


 
Лёша   (2003-04-25 17:02) [3]

пример №1:
procedure TForm1.Button9Click(Sender: TObject);
var
a:array of byte;
Bytes:dword;
p:pointer;
begin
hComm:=CreateFile( PChar(Format("COM%1d", [1])),
GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

SetLength(a,512);
FillChar(a, SizeOf(a), $00);
WriteFile(hComm, a, 512, Bytes, nil);


CloseHandle(hComm);
end;

пример №2:
procedure TForm1.Button9Click(Sender: TObject);
var
a:array of byte;
Bytes:dword;
p:pointer;
begin
hComm:=CreateFile( PChar(Format("COM%1d", [1])),
GENERIC_READ or GENERIC_WRITE,
0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

SetLength(a,512);
FillChar(a, SizeOf(a), $00);
p:= @a;
WriteFile(hComm, p, 512, Bytes, nil);


CloseHandle(hComm);
end;


в обоих случаях прет мусор, если пишу в порт статический массив то, нет проблем, подскажите пожалуйста в чем ошибка...


 
MBo ©   (2003-04-25 17:11) [4]

WriteFile(hComm, a[0], 512, Bytes, nil);


 
Fiend ©   (2003-04-25 17:11) [5]

всё уже сказали (Дигитмэн) надо адрес буфера давать
р^


 
Zz_   (2003-04-25 17:11) [6]

Почуствуй разницу (из windows.pas)

function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL; stdcall;

function WriteFileEx(hFile: THandle; lpBuffer: Pointer; nNumberOfBytesToWrite: DWORD;
const lpOverlapped: TOverlapped; lpCompletionRoutine: FARPROC): BOOL; stdcall;

Из WinApiHepl

BOOL WriteFile(

HANDLE hFile,
LPCVOID lpBuffer,file
DWORD nNumberOfBytesToWrite,
LPDWORD lpNumberOfBytesWritten,
LPOVERLAPPED lpOverlapped
);

BOOL WriteFileEx(

HANDLE hFile,
LPCVOID lpBuffer,
DWORD nNumberOfBytesToWrite,
LPOVERLAPPED lpOverlapped,
LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);

уроды


 
MBo ©   (2003-04-25 17:12) [7]

и FillChar(a[0], Length(a)*SizeOf(byte), $00);


 
Лёша   (2003-04-25 18:06) [8]

ВСЕМ С П А С И Б О!
Особенная благодарность MBo.
Вроде сдвинулось с места!



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

Текущий архив: 2003.07.07;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
3-20019
Caponid
2003-06-11 15:34
2003.07.07
Как в TDBGrid запретить перемещение курсора при


14-20281
Tornado
2003-06-20 09:35
2003.07.07
Как бороться со спамом?


6-20186
Tenrai
2003-04-04 06:11
2003.07.07
Новое окно при клике на ссылку в TWebBrowser


1-20075
SM
2003-06-24 01:51
2003.07.07
Как связать файлы со своим приложением?


14-20240
Dimich1978
2003-06-19 08:51
2003.07.07
Microsoft хочет похоронить MP3