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

Вниз

Не знаю как сделать.Функция доканает !   Найти похожие ветки 

 
StasStas   (2005-11-03 23:59) [0]

Уважаемы профессионалы Delphi.

Нужна помощь !
Внизу пример исходного текста программы.
Как прочесть массив данных указанной ниже экспортной функцией.
Как не пытаюсь пишет неверные типы  и тому подобное ....
Понимаю для вас это азы , для меня тупик

------------------------------------------------------------------------------------------------------------------------ --------------------------------
{структура}

PConGroup = ^TConGroup;
TConGroup = record
  group                 : array [0..15] of char;  // group name
  enable                : integer;                // enable group
  timeout               : integer;                // trade confirmation timeout (seconds)
end;
PAConGroup = ^TAConGroup;
TAConGroup = array [0..0] of TConGroup;

{функция}
{total - количество прочтения записей , если 0 то все}
function  CfgRequestGroup(total:pinteger):PAConGroup;           stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
conf  : TConGroup;
kol:pinteger;
begin

 ZeroMemory(@conf,SizeOf(conf));
 
 {необходимо прочитать массив данных из функции CfgRequestGroup , отдельно каждый элемент что бы дернуть можно было}
 {делал так
 conf:=CfgRequestGroup(@kol);
 компилятор выругался и послал подальше , как сделать ?????
 }

end;

------------------------------------------------------------------------------------------------------------------------ --------------------------------


 
злобная танька   (2005-11-04 00:13) [1]

conf:=CfgRequestGroup(@kol)^;
крышечку забыл


 
StasStas   (2005-11-04 00:31) [2]

Попробую так.
Компилятор пишет разные типы данных.


 
злобная танька   (2005-11-04 00:34) [3]

а так?
conf:=CfgRequestGroup(@kol)^[0];


 
злобная танька   (2005-11-04 00:36) [4]

шо он конкретно пишет?


 
Zeqfreed ©   (2005-11-04 00:51) [5]

злобная танька   (04.11.05 0:34) [3]
[3] Работает, но, по-моему, лучше использовать какой-то более гуманный подход к решению задачи :)


 
Zeqfreed ©   (2005-11-04 00:52) [6]

Zeqfreed ©   (04.11.05 0:51) [5]
Это было обращение к автору.


 
злобная танька   (2005-11-04 00:55) [7]


> Zeqfreed ©   (04.11.05 00:51) [5]

чего тут думать.. эту функцию дурацкую с указателями выкинуть нафиг и всего делов!


 
Плохиш ©   (2005-11-04 00:56) [8]


> function  CfgRequestGroup(total:pinteger):PAConGroup;  
>         stdcall;
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> conf  : TConGroup;
> kol:pinteger;
> begin
>
>  ZeroMemory(@conf,SizeOf(conf));
>  
>  {необходимо прочитать массив данных из функции CfgRequestGroup
> , отдельно каждый элемент что бы дернуть можно было}
>  {делал так
>  conf:=CfgRequestGroup(@kol);

Собачку надо убрать.


 
StasStas   (2005-11-04 00:57) [9]

Пишет несоответствие TConGroup и PAConGroup


 
StasStas   (2005-11-04 00:59) [10]


> >  conf:=CfgRequestGroup(@kol);
>
> Собачку надо убрать.


не @ пропускает ...


 
StasStas   (2005-11-04 01:02) [11]


> > Zeqfreed ©   (04.11.05 00:51) [5]
>
> чего тут думать.. эту функцию дурацкую с указателями выкинуть
> нафиг и всего делов!


функция экспортная из DLL , убрать нельзя ...


 
Плохиш ©   (2005-11-04 01:02) [12]


> StasStas   (04.11.05 00:57) [9]
> Пишет несоответствие TConGroup и PAConGroup

Телепатор говорит:

PAConGroup = ^TAConGroup;
TAConGroup = array [0..0] of TConGroup;

{функция}
{total - количество прочтения записей , если 0 то все}
function  CfgRequestGroup(total:pinteger):PAConGroup;           stdcall;

procedure TForm1.Button1Click(Sender: TObject);
var
conf  : PAConGroup;
kol:pinteger;
i:integer;
begin
 ZeroMemory(@conf,SizeOf(conf));
 conf:=CfgRequestGroup(kol);
 for i := 0 {?} to kol^ do
   with conf^[i] do (*  чёта делаем с полученными данными *)
end;


 
StasStas   (2005-11-04 01:04) [13]

Спасибо , буду пробывать ...


 
злобная танька   (2005-11-04 01:06) [14]


> StasStas   (04.11.05 00:59) [10]
> не @ пропускает ...

пропускает ну и шо?
зачем этой функции указатель на указатель?
усё правильно, собачку надо убрать.


 
Плохиш ©   (2005-11-04 01:08) [15]


> StasStas   (04.11.05 00:59) [10]
>
> > >  conf:=CfgRequestGroup(@kol);
> >
> > Собачку надо убрать.
>
>
> не @ пропускает ...

А подумать? Ты передаёшь адрес указателя, хотя функция требует адрес переменной типа integer.


 
Плохиш ©   (2005-11-04 01:11) [16]


> Плохиш ©   (04.11.05 01:02) [12]

Фи, следует читать:

procedure TForm1.Button1Click(Sender: TObject);
var
conf  : PAConGroup;
kol:integer;
i:integer;
begin
ZeroMemory(@conf,SizeOf(conf));
conf:=CfgRequestGroup(@kol);
for i := 0 {?} to kol do
  with conf^[i] do (*  чёта делаем с полученными данными *)
end;

или распределять память для kol из [12] ;-)


 
StasStas   (2005-11-04 07:40) [17]

Функция требует pinteger.
Если убираю собачку , компилятор не пропускает пишет , что нужно pinteger , а не integer.

Спасибо всем , попал на тот форум где именно класные спецы сидят.
Редко , кто поможет , а тут другое дело.


 
Плохиш ©   (2005-11-04 11:13) [18]


> StasStas   (04.11.05 07:40) [17]
> Функция требует pinteger.
> Если убираю собачку , компилятор не пропускает пишет , что
> нужно pinteger , а не integer.

В [16] собачка нужна!


 
StasStas   (2005-11-04 12:29) [19]

Все заработала как надо , но массив виден если только ставлю вместо :
TAConGroup = array [0..0] of TConGroup;

ставлю
TAConGroup = array [0..110] of TConGroup;

тогда читаю массив , но массив больше 500 , ставлю например 500 или больше Delphi вылетает с надписью
Access violation ...

Ставлю обратно 110 или меньше работает , больше 110 вылетает.
Та структура что в примере маленькая , а по настоящему она немеренная из 25 полей , и ресурсов , наверное не хватает.
То ли ей надо как то память выделить (через GetMem никак) , то ли как то по другому массив обрабатывать



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

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

Наверх




Память: 0.49 MB
Время: 0.043 c
1-1130405379
ВоваВова
2005-10-27 13:29
2005.11.20
Запуск .bat файла


2-1130849562
BFG9k
2005-11-01 15:52
2005.11.20
Закрытие программы в OnCreate


14-1130249321
Hamertime
2005-10-25 18:08
2005.11.20
Расшифровка бинарного кода


3-1128601467
Shc
2005-10-06 16:24
2005.11.20
Прорисовка DBRichEdit на DBCtrlGrid


3-1128686858
Скиф
2005-10-07 16:07
2005.11.20
Создание dbf таблицы , создание индексного файла.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский