![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про DLL и строки. [D2005, XP]
Vovan#1 © (2006-09-15 22:27:00)Вопрос такой.
Есть ли проблемы с памятью при передаче строк в функции и процедуры DLL?
Есть ли какие-то особенности при использовании ShortString как возвращающегося значения и можно ли просто использовать тип, вроде TMyString = String[20]?
Германн (2006-09-17 01:28:00) [1]2м zamtmn © (17.09.06 00:40) [28]
> интересно, какие тебе попадались не "кривые" компиляторы?
Имхо, в "кривых руках", растущих не из того места, да ещё и при привычке "расстопыривать пальцы", всё "бажное", кроме "самого его любимого"!
Не трать время на него.
zamtmn (2006-09-17 00:40:00) [2]>Vovan#1
интересно, какие тебе попадались не "кривые" компиляторы?
Vovan#1 (2006-09-17 00:29:00) [3]В кривых руках Борланда бажный компилятор - вообще зверь.
Учебники по Delphi - уже смешно.
zamtmn (2006-09-16 23:32:00) [4]в [12] работой с dll не пахнет.
Vovan#1, читай учебники
Dmitrij_K (2006-09-16 22:44:00) [5]Перепиши [12] для любого компилятора и попробуй запустить EXE.
Как думаешь что получится?
> Компилятор явно бажный
к кривых руках да
Vovan#1 (2006-09-16 21:54:00) [6]>dll это не delphi, это win32, работа с ними кстати такаяже как в VC
[12] откомпилится и в VC???
zamtmn (2006-09-16 21:46:00) [7]>>Работа с DLL никакая и главное, что в справке нифига не найти
dll это не delphi, это win32, работа с ними кстати такаяже как в VC
прежде чем всё саксить, удели побольше внимания LMD:)
Vovan#1 (2006-09-16 21:41:00) [8]>Да, типичный LMD. Читать не умеем, на разъяснения огрызаемся, зато виноваты, как всегда, Билл Гейтс и дядя Борланд.
По-подробнее можно? А то не всё понятно.
Джо (2006-09-16 21:38:00) [9]Да, типичный LMD. Читать не умеем, на разъяснения огрызаемся, зато виноваты, как всегда, Билл Гейтс и дядя Борланд.
Vovan#1 (2006-09-16 21:31:00) [10]А почему должен быть кто-то не suxx? Ну вот ешё раз. Delphi не умеет сравнивать записи - это раз. Компилятор явно бажный, о чём я писал (
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1158260023&n=18). Работа с DLL никакая и главное, что в справке нифига не найти. На calling conventions даёт материал про Visual C++, хотя я то программирую на Delphi и VC++ вообще не установлена. В общем, сам не рад, что начал эту бадягу с Delphi.
LMD - самокритика, чтобы [1] было не обидно.
Anatoly Podgoretsky (2006-09-16 21:17:00) [11]Вопрос а кто не suxx?
И кто LMD?
zamtmn (2006-09-16 21:08:00) [12]basic рулез?
Vovan#1 (2006-09-16 21:00:00) [13]Спасибо, всё ясно стало. Снимаю обвинения с [1].
Delphi suxx, статьи про DLL suxx, LMD
zamtmn (2006-09-16 20:21:00) [14]>>Почему же невнимательность лечится удалением stdcall'а?
также она лечится и добавлением stdcall'а.
соглпшения о вызове процедуры должны быть одинаковыми в exe и dll
Dmitrij_K (2006-09-16 20:09:00) [15]
> в твоем примере виноват все-таки не stdcall, а невнимательность
> его автора :)
чуешь разницу?
library TestDLL;
uses
SysUtils, Classes;
{$R *.res}
function SomeFunct(Str: ShortString): ShortString; stdcall;
begin
Result := Str + ' added';
end;
exports
SomeFunct;
begin
end.
Vovan#1 (2006-09-16 20:01:00) [16]>Боюсь, в твоем примере виноват все-таки не stdcall, а невнимательность его автора :)
Почему же невнимательность лечится удалением stdcall'а?
DrPass (2006-09-16 19:53:00) [17]
> Vovan#1 (16.09.06 19:09) [12]
Боюсь, в твоем примере виноват все-таки не stdcall, а невнимательность его автора :)
Vovan#1 (2006-09-16 19:09:00) [18]>И какие же у тебя проблемы с ShortString при stdcall?
А вы ещё не знаете?
library TestDLL;
uses
SysUtils, Classes;
{$R *.res}
function SomeFunct(Str: ShortString): ShortString;
begin
Result := Str + ' added';
end;
exports
SomeFunct;
begin
end.
unit unitTest;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TformTest = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
formTest: TformTest;
function SomeFunct(Str: ShortString): ShortString; stdcall; external 'testdll.dll';
implementation
{$R *.dfm}
procedure TformTest.FormCreate(Sender: TObject);
begin
Caption := SomeFunct('Test');
end;
end.
========> Access Violation
Германн (2006-09-16 16:55:00) [19]
> Спросил именно то, что хотел - какие проблемы с ShortString?
> Сказали - никаких. Это должно было означать, что никаких
> с stdcall и без него.
И какие же у тебяпроблемы с ShortString при stdcall?
Vovan#1 (2006-09-16 16:32:00) [20]>Правильный вопрос: Что такое stdcall?
Вот так и надо было спрашивать, а не мутить воду короткими строками!
Никакой он не правильный. Спросил именно то, что хотел - какие проблемы с ShortString? Сказали - никаких. Это должно было означать, что никаких с stdcall и без него.
Всё это значит, что и на вопросы в "Начинающим" надо уметь отвечать, а не делать, как в [1], показывая, что мне делают услугу, поэтому довольствуйся брошенными фразами.