Bis auf, dass du dir vielleicht eine gewissen Einrückung angewöhnen solltest, damit die Struktur klarer wird, kann ich erstmal nichts erkennen.
Hast du denn schonmal versucht mit einem Debugger dem Fehler auf die Spur zukommen?
Vielleicht liegts irgendwie an den Threads. Ich weiß es leider nicht. Auf jeden Fall muss er irgendwo durcheinander kommen. Hast du denn schon mal probiert, wie die
DLL bei anderen Komponenten/Ereignissen reagiert. Vielleicht unterscheidet sich ja irgendwo die interne Verarbeitung des OnClick von TMenuItem und TButton, wodurch der Fehler auftritt ...
Beispiel für Einrückung:
Delphi-Quellcode:
procedure exec();
var
f:array[0..4095] of char;
s,r:array[0..16000] of char;
n:array[0..4] of char;
i:integer;
begin
if(isRep()=0)then
begin
if form1.unix1.Checked then
begin
n[0]:='\';
n[1]:='n';
n[2]:=#0;
end;
.
.
.
for i:=1 to form1.memo2.Lines.Count-1 do
begin
add(r,Pchar(form1.memo2.Lines[i]));
if(i<>form1.memo2.Lines.Count-1)then
begin
add(r,n);
end;
end;
if(s[0]<>#0) then
replacer(f,s,r);
end
else
MessageBox(application.Handle,'Is busy!','ERROR!',MB_OK or MB_ICONERROR);
end;