| Autor |
Beitrag |
rpatsch
Hält's aus hier
Beiträge: 3
|
Verfasst: Do 16.11.06 20:01
Hallo alle zusammen,
ich habe ein Problem mit einem Assemblerprogrammaufruf. Folgender Delphicode ist vorhanden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| var Form1: TForm1;
implementation
{$R *.dfm} {$L uppinneu.obj}
procedure TForm1.BitBtn2Click(Sender: TObject); var W_PC, W_KPROM, W_VAR, W_PINCODE, S_ME_FE, W_HAENDLER : String;
begin W_PC := MaskEdit1.Text+MaskEdit2.Text+MaskEdit3.Text; W_KPROM := MaskEdit4.Text; W_VAR := '5'; W_PINCODE := '0000'; S_ME_FE := '0'; W_HAENDLER := '0'; pinneu(var w_pc,w_kprom,w_var,w_pincode,s_me_fe,w_haendler:string); external; edit1.Text := w_pincode; end; |
Nach dem kompilieren wird mir der Fehler 55 Undefinierter Bezeichner:'pinneu' ausgegeben. Im Assemblerfile wird aber mit:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| memory segment public 'code'
assume cs:memory,ds:memory,es:memory,ss:nothing
public pinneu
pinneu proc far ;Beginn der Procedure.
; Hier steht jetzt der Code
memory ends end |
die Procedure pinneu gestartet.
Kann mir jemand bei der Problemlösung helfen?
Viele Grüße aus Unterschleißheim
Rolf
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
Jakob Schöttl
      
Beiträge: 929
Erhaltene Danke: 1
Delphi 7 Professional
|
Verfasst: Do 16.11.06 20:49
Ist bisschen schwer anzusehen. Setze bitte erstmal allen Quellcode in delphi-Tags (
außerdem kannst du auch in delphi assemlbercode schreiben
muss weg
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Fr 17.11.06 03:30
rpatsch hat folgendes geschrieben: | Hallo alle zusammen,
ich habe ein Problem mit einem Assemblerprogrammaufruf. Folgender Delphicode ist vorhanden:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| var Form1: TForm1;
implementation
{$R *.dfm} {$L uppinneu.obj}
procedure TForm1.BitBtn2Click(Sender: TObject); var W_PC, W_KPROM, W_VAR, W_PINCODE, S_ME_FE, W_HAENDLER : String;
begin W_PC := MaskEdit1.Text+MaskEdit2.Text+MaskEdit3.Text; W_KPROM := MaskEdit4.Text; W_VAR := '5'; W_PINCODE := '0000'; S_ME_FE := '0'; W_HAENDLER := '0'; pinneu(var w_pc,w_kprom,w_var,w_pincode,s_me_fe,w_haendler:string); external; edit1.Text := w_pincode; end; |
Nach dem kompilieren wird mir der Fehler 55 Undefinierter Bezeichner:'pinneu' ausgegeben. Im Assemblerfile wird aber mit:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| memory segment public 'code'
assume cs:memory,ds:memory,es:memory,ss:nothing
public pinneu
pinneu proc far ;Beginn der Procedure.
; Hier steht jetzt der Code
memory ends end |
die Procedure pinneu gestartet.
Kann mir jemand bei der Problemlösung helfen?
Viele Grüße aus Unterschleißheim
Rolf
Moderiert von raziel: Delphi-Tags hinzugefügt |
Hallo,
du musst natürlich pinneu deklarieren (wie jede andere Prozedur auch), dort kommt auch "external" hin.
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| implementation
procedure pinneu(var w_pc,w_kprom,w_var,w_pincode,s_me_fe,w_haendler:string); external;
procedure TForm1.BitBtn2Click(Sender: TObject); var W_PC, W_KPROM, W_VAR, W_PINCODE, S_ME_FE, W_HAENDLER : String; |
Gruss Reinhard
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 17.11.06 09:41
Du kannst bei Delphi ASM-Sources direkt in den Delphi-Programmsource einbinden ...
Mit folgendem Source geht die direkte Einbindung von ASM-Source:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Procedure WinPin(var w_pc,w_kprom,w_var,w_pincode,s_me_fe,w_haendler:string); asm
end; |
Die externe Einbindung ist wie gezeigt mit {$L ASM.obj} und der External-Deklaration ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
rpatsch 
Hält's aus hier
Beiträge: 3
|
Verfasst: Fr 17.11.06 14:41
Ich danke euch recht herzlich für die Info. Werde die Sache in den nächsten Tagen mal weiter untersuchen. Falls weitere Fragen auftauchen, melde ich mich wieder.
Nochmals vielen Dank für die schnelle Hilfe.
Rolf
|
|
|