Delphi Funktion

Gast #5129830
Lesenswert?

Hallo zusammen,

ich habe ein Anliegen für Leute, die schon lange mit Pascal / Delphi 
arbeiten. Ich habe eine Software aus Delphi 1 (16bit), die 
zwischenzeitlich nicht mehr auf 64bit Betriebssystemen läuft. Ich möchte 
diese nun in Delphi 3 übersetzen, was auch bis auf eine Kleinigkeit 
gelungen ist.

Problem ist folgende Funktion:

Function CallFarProc (Var DatS; KeyNr: BYTE) : IsamKeyStr;
INLINE($FF/$1E/ProcAdress);

ProcAdress ist vom Typ Pointer und zeigt auf eine Funktion, die 
ausgeführt werden für CallFarProc ausgeführt werden soll. Das hat in 
Delphi 1 so funktioniert, allerdings scheint es diese Anweisung in 
Delphi 3 nicht mehr zu geben.

Ich programmiere selbst nur in C++ / C# / Basic und bin grade etwas 
überfordert. Vielleicht kann mir jemand einen Tipp geben, wie ich die 
Funktion mit den Pointer ProcAdress einfügen kann.

Vielen Dank und schönes WE!
Steffen
#5129926
Lesenswert?

Steffen schrieb:
> Function CallFarProc (Var DatS; KeyNr: BYTE) : IsamKeyStr;
> INLINE($FF/$1E/ProcAdress);

Soll vermutlich ein in Assembler codierter Funktionsaufruf "far" sein, 
$FF ist dessen Opcode. Könnte eine Krücke für das 16-bittige Delphi 1 
sein, braucht man in 32- und 64-bit nicht mehr.

Das muss man in Delphi sinngemäß übersetzen: Delphi kennt Funktions- und 
Prozedurzeiger.

Am Einfachsten müsste es sein, wenn ProcAddress gleich den richtigen Typ 
hat:
1
type tProcAddress = Function(Var DatS; KeyNr: BYTE) : IsamKeyStr;
2

3
var ProcAddress: tProcAddress;
4

5
implementation
6

7
Function CallFarProc (Var DatS; KeyNr: BYTE) : IsamKeyStr;
8
begin
9
   result:=ProcAddress(DatS,KeyNr);
10
end;
Gast #5129967
Lesenswert?

Delphi 3 ? Soll das ein Witz sein ? Delphi 3 war zwar super, das war 
aber im letzten Jahrtausend. "IsamKeyStr" erinnert mich an irgendwelche 
Toolboxen.

Ich wuer alles neu schreiben. Das macht man heute in einem Bruchteil der 
Zeit. Das GUi ist besser, der Compiler ist schneller, der Code ist 
schneller.
Gast #5130412
Lesenswert?

Und die modernen Technologien veralten schneller.

Bis du es in Angular umgesetzt hast, ist Angular schon längst wieder 
Steinzeittechnologie. Du musst es gleich wieder auf React umbauen. Bis 
du es in React umgesetzt hast ...
Gast #5130579
Lesenswert?

длинний зелёний тролль schrieb:
> Ich wuer alles neu schreiben

Ich habe z.B. so alte Win16-Programme, die setzen die Rechnungsdaten aus 
der Fertigung so um, dass sie von der Buchhaltung gelesen werden können. 
Kein Hexenwerk, aber braucht man halt.

длинний зелёний тролль schrieb:
> Das GUi ist besser, der Compiler ist schneller, der Code ist
> schneller

Und das ist für so einen Zweck völlig irrelevant. Eher noch ist es 
besser, wenn sich an Aussehen und Bedienung GARNICHTS ändert.

Georg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren