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

Вниз

прередача строк из Dll в программу.   Найти похожие ветки 

 
bloodman ©   (2004-07-22 18:41) [0]

Зная, что вопрос уже всплывал на форуме много раз, но у меня немного другое направление этого вопроса:
Мне нужно передать запись , состоящую из масивов строк:
 TBtAdd = record
   Names: array [0..20] of PChar;
   NamesOfFunc: array [0..20] of PChar;
   Count: integer;
  end;

Делаю так:

function Buts(var btN:PChar):TBtAdd;stdcall;
var
b : TBtAdd;
begin
btN:=PChar("gd");
b.Names[0]:= PChar("fds");
b.Count:=1;
b.NamesOfFunc[0]:=PChar("Bo");
result:=b;
end;

из программы вызываю так:
var
but : TBtAdd;
butName : PChar;
...
but:=FMakeButons(butName);
впрочем это не важно.

Дело в том что на строчке result:=b вылезает AV. В чем Ошибка?


 
Суслик ©   (2004-07-22 18:44) [1]

я так понял fmakebutons = buts?

а как fmakebutons описан?


 
VMcL ©   (2004-07-22 18:44) [2]

>>bloodman ©  (22.07.04 18:41)

>Зная, что вопрос уже всплывал на форуме много раз, но у меня немного другое направление этого вопроса

Самое что ни на есть рядовое направление такого рода вопросов.

Память для PChar кто будет выделять и освобождать?


 
Subdigger   (2004-07-22 18:46) [3]

a почему не :
function Buts(var btN:PChar):TBtAdd;stdcall;
begin
btN:=PChar("gd");
result.Names[0]:= PChar("fds");
result.Count:=1;
result.NamesOfFunc[0]:=PChar("Bo");
end;


 
bloodman ©   (2004-07-22 18:54) [4]

Суслик ©   (22.07.04 18:44) [1]
FMakeButons=function(var btnName:PChar):TBtAdd;stdcall;

Subdigger   (22.07.04 18:46) [3]
Можно и так это я для подстраховки ,  когда искал причину AV.

VMcL ©   (22.07.04 18:44) [2]
используя realloc ???


 
bloodman ©   (2004-07-22 19:22) [5]

И где мне выделять память в прграмме, или в длл,или и таам и там
??


 
Reindeer Moss Eater ©   (2004-07-22 19:23) [6]

Там где тебе больше нравится


 
Palladin ©   (2004-07-22 19:24) [7]

Пусть Word выделяет...


 
Суслик ©   (2004-07-22 19:25) [8]


> таам и там

и можно без хлеба.

поддерживаю 6 - только выработай стандарт и следуй ему - либо там, либо тут.


 
Dimaxx   (2004-07-22 20:56) [9]

Используй shortstring - его можно безболезненно использовать, если прога и либа твои. Если прога/либа чужая, то только через pchar.


 
Акакий   (2004-07-22 21:30) [10]

Удалено модератором


 
bloodman ©   (2004-07-22 23:19) [11]

Я уже решил проблему, нужно было просто написать так:

function Buts(var btN:PChar;btn:TBtAdd):boolean;stdcall;


 
bloodman ©   (2004-07-22 23:20) [12]

function Buts(var btN:PChar;var btn:TBtAdd):boolean;stdcall;
вот так .



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

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

Наверх




Память: 0.49 MB
Время: 0.343 c
1-1090476209
Form
2004-07-22 10:03
2004.08.08
Дамп памяти процесса


8-1085194824
Steef
2004-05-22 07:00
2004.08.08
Регулятор звука


14-1090507516
Dima
2004-07-22 18:45
2004.08.08
Запуск консольных процессов


14-1090575348
chirchik
2004-07-23 13:35
2004.08.08
Что лучше ADOTable или ADOQuery?


6-1086697837
Григорьев Антон
2004-06-08 16:30
2004.08.08
Вопрос по версиям WinSock