Подскажите, пытаюсь передать строку из Mapbasic'a в процедуру из Dll:
Dll на Delphi:
procedure zzz(s:String);stdcall;
begin
showmessage(s);
end;
Код Mapbasic:
Declare Sub zzz Lib "MyDll.dll" (s as String)
dim s as string
s="abcdef"
call zzz(s)
В итоге в Dll передается какая-то фигня (случайный набор кракозябр, каждый раз разный, или вообще вылетает Dll-ка). Пробовал в Dll вместо String писать PChar, WideChar, AnsiChar - один фиг не получается.
Подскажите куда копать.
			
			
									
						
										
						Передача строки из Mapbasic в DLL (Delphi)
- 
				spawner
 - Активный участник
 - Сообщения: 110
 - Зарегистрирован: 09 окт 2009, 16:49
 - Репутация: 13
 
- 
				gamm
 - Гуру
 - Сообщения: 4177
 - Зарегистрирован: 15 окт 2010, 08:33
 - Репутация: 1107
 - Ваше звание: программист
 - Откуда: Казань
 
Re: Передача строки из Mapbasic в DLL (Delphi)
string на delphi - это весьма специфическая конструкция. Насколько я помню (уж очень давно это было), из Мапвасика передается адрес символьной строки, и встречать его нужно соответственно. См тут, например
			
			
									
						
										
						- 
				Cancer
 - Участник
 - Сообщения: 56
 - Зарегистрирован: 25 фев 2009, 20:55
 - Репутация: 3
 - Откуда: Инструментарий для MapInfo
 - Контактная информация:
 
Re: Передача строки из Mapbasic в DLL (Delphi)
Попробуйте так:
Dll на Delphi:
procedure zzz(s:LPCSTR);stdcall;
begin
showmessage(s);
end;
Код Mapbasic:
Declare Sub zzz Lib "MyDll.dll" (s as String * 255)
			
			
									
						
										
						Dll на Delphi:
procedure zzz(s:LPCSTR);stdcall;
begin
showmessage(s);
end;
Код Mapbasic:
Declare Sub zzz Lib "MyDll.dll" (s as String * 255)
- 
				spawner
 - Активный участник
 - Сообщения: 110
 - Зарегистрирован: 09 окт 2009, 16:49
 - Репутация: 13
 
Re: Передача строки из Mapbasic в DLL (Delphi)
В общем я затупил, сделал локальную переменную в мапбэйсике, и в момент вызова процедуры в dll она уже была уничтожена 
 заменил на глобальную и все заработало.
			
			
									
						
										
						Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей