Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Про DLL и строки. [D2005, XP]


Страницы:   1 2

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], показывая, что мне делают услугу, поэтому довольствуйся брошенными фразами.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо