Kwestia taka, że mam program (w nim memo1) i bibliotkę DLL, w sposób statyczny ładuję bibliotekę i chcę, by ona wpisała w memo cokolwiek no np "nic".
DLLka:
library Strings;
{[...]}
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Gauges, ExtCtrls,
Unit1 in '..\Unit1.pas' {Form1};
{$R *.res}
procedure MemoFill; stdcall;
var
Form1 : TForm1;
Memo1: TMemo;
begin
MessageBox(0, 'Procedura uruchomiona', 'Informacja!', MB_OK);
form1.memo1.text:='nic';
end;
I program główny (z wyciętym tym, co było niepotrzebne)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, Gauges, ExtCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure MemoboxFill; stdcall external 'Data/Strings.dll' name 'MemoFill';
implementation
{$R *.dfm}
procedure TForm1.ComboBox2Change(Sender: TObject); //<- Tu nie Combochancge tylko Guzik
begin
MemoFill;
end;
end.
I kwestia taka, że po wciśnięciu guzika, pokazuje się info że "Procedura uruchomiona" a potem pada, zawsze wyskakuje mi błąd "Access violition at adress 003CC6A6 in module 'Strings.dll'. Read of adress D08B0000"