Delphi Funktion

Gast #5129830
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
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
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
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
длинний зелёний тролль 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

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.