Problem z biblioteką dll

0

Robię to po raz pierwszy...
Idąc w ślad artykułu z 4programmers.net, zrobiłem nowego dll'a, wkleiłem do niego zawartość tego, co wcześniej miałem w button1click w formularzu(żeby przejrzyściej kod wyglądał), i... zapisuję, a dlla nie ma, ino dpr. Kombinując kliknąłem kompilację, i napisał że niezdefiniowane Memo1. To samo jak dusiłem F9.
Wie ktoś wtf i jak na to poradzić?

Ino kod nieco obcięty(bez całej, powtarzającej się składniowo zawartości pętli):

library Biosynth;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  SysUtils, Classes;

var
  Abort: Boolean;
  Pause: Boolean;

{$R *.res}

procedure Synthesis; stdcall; export;
var
  i: Integer;
begin
  Abort := False;
  Pause := False;
  i:=0;
 while i <= Length(Memo1.Text) do
  begin
if Memo1.Text[i] = ' ' then
 Sleep(100);

sleep(75);
Application.ProcessMessages();
while Pause=True do
begin
Application.ProcessMessages();
sleep(1);
end;
if Abort then break;
  inc(i);
  end;
end;

exports
 Synthesis name 'Synthesis';
 
begin
end.
0

szczyt ...

ja wiem, że późno jest ale jakieś komórki mózgowe to ci chyba jeszcze działają ...

0

Ych.. Nie przywykłem do spania później niż o północy;].
Wiem, że pewnie źle zrobiłem kopiując samą zawartość Button1Click, ale zupełnie nie mam pojęcia jak się zatem do tego zabrać.

0

no to może zacznijmy od tego - po co ci w ogóle dllka?
Potem dllka to całkiem osobny program więc nie masz tam żadnego Memo1, następnie popracuj nad formatowaniem kodu bo to jest straszne i ciężko się połapać co jest gdzie. No i na koniec po co ta pętla jak na dobrą sprawę zupełnie nic nie robi (poza wprowadzaniem poóźnień)

0

Aaa, już spieszę z wyjaśnieniami...
Ten akurat fragment z if Memo1.Text = ' ' to jest reakcja na spację w podanym w formularzu tekście.
Normalnie tam są jeszcze warunki dla liter i znaków i w nich PlaySound.

Myślałem, że dll jest łatwo zrobić, bo to niby fragment kodu który importuje sobie program, a nauczyciel lubi takie pierdoły więc i by wyższą ocenę mi dał...

0

DLL to nie jest importowany fragment kodu, tylko coś całkiem oddzielnego. Do DLL musiałbyś przekazać jakiś wskaźnik na ten Memo1, aby na tym biblioteka mogła operować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1