Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
public array of THandle Найти похожие ветки
← →
NPR2 (2004-03-10 10:14) [0]В главной форме описываю массив как public и складываю в него Handle, открытых СОМ портов. Но в дочернем окне при write в порт и read из порта я не вижу нужного элемента этого массива, т.е
WriteFile(aHandle[m]," 1 1c"+#239,6,dw_Write,@OverWrite) не работает.
А когда в главной форме описываю просто как Thandle и открываю только один порт, то все проходит нормально.
Как сделать, чтобы все работало.
← →
Я © (2004-03-10 10:21) [1]1. "Не работает" это: не компилируется или не выполняет того, что нужно?
2. Обращение: MainForm.aHandle[m]. Хотя (по описанию) это нарушение инкапсуляции. Используйте public property.
← →
NPR2 (2004-03-10 10:30) [2]Самое интересное, что компилируется и выполняется, только без результата - если я в лоб руками набиру. В авто подсказке этот элемент не виден.
← →
Я © (2004-03-10 10:36) [3]Приведите:
1. Декларацию класса основной формы
2. Код записи данных в массив
3. Код чтения данных из массива
4. Как задается размер массива?
← →
NPR2 (2004-03-10 11:40) [4]unit Gl;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, ExtCtrls, DB, DBTables,Registry;
type
TGl_Form = class(TForm)
...
public
aHandle:array of THandle;
...
procedure TGl_Form.FormCreate(Sender: TObject);
...
SetLength(aHandle,st_Com_Port.Count); количество СОМ портов из реестра
for m:=0 to st_Com_Port.Count-1 do
begin
aHandle[m]:=CreateFile(PChar(st_Com_Port.Strings[m]),
GENERIC_READ or GENERIC_WRITE,0,nil,
OPEN_EXISTING,FILE_FLAG_OVERLAPPED,0);
...
end;
procedure TGl_Form.Timer_SworTimer(Sender: TObject);
....
WriteFile(aHandle," 1 1c"+#239,6,dw_Write,@OverWrite);
...
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.024 c