AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dll-Methodenparameter von var nach const ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Dll-Methodenparameter von var nach const ändern

Ein Thema von Der schöne Günther · begonnen am 20. Jan 2017 · letzter Beitrag vom 20. Jan 2017
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.202 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: Dll-Methodenparameter von var nach const ändern

  Alt 20. Jan 2017, 10:07
Ok danke, mit Assembler kenne ich mich kein Stück aus. Das bedeutet also nein.

Ich verstehe das mit dem Assembler aber noch nicht, wenn ich jetzt z.B. einmal gerne dasd [Ref] testen würde.

Folgender Code
Delphi-Quellcode:
program Project16;

{$APPTYPE CONSOLE}

{$R *.res}

uses System.SysUtils;

var
   a,b,c: Integer;

procedure stuffA(
   var a: Integer;
   var b: Integer;
   var c: Integer
 ); stdcall;
 begin
    asm nop end;
 end;

 procedure stuffB(
   var a: Integer;
   const [Ref] b: Integer;
   var c: Integer
 ); stdcall;
 begin
    // b := 42; // VERBOTEN
    asm nop end;
 end;

begin
   a := 10;
   b := 20;
   c := 30;

   stuffA(a,b,c);
   stuffB(a,b,c);
end.
ergibt folgende Assembly:
Code:
Project16.dpr.31: begin
004194E8 55               push ebp
004194E9 8BEC            mov ebp,esp
004194EB 83C4F0           add esp,-$10
004194EE A164B64100       mov eax,[$0041b664]
004194F3 C60001           mov byte ptr [eax],$01
004194F6 B8806E4100       mov eax,$00416e80
004194FB E89CF6FEFF      call @InitExe
Project16.dpr.32: a := 10;
00419500 C705C80E42000A000000 mov [$00420ec8],$0000000a
Project16.dpr.33: b := 20;
0041950A C705CC0E420014000000 mov [$00420ecc],$00000014
Project16.dpr.34: c := 30;
00419514 C705D00E42001E000000 mov [$00420ed0],$0000001e
Project16.dpr.36: stuffA(a,b,c);
0041951E 68D00E4200       push $00420ed0
00419523 68CC0E4200       push $00420ecc
00419528 68C80E4200       push $00420ec8
0041952D E83AD9FFFF      call stuffA
Project16.dpr.37: stuffB(a,b,c);
00419532 68D00E4200       push $00420ed0
00419537 68CC0E4200       push $00420ecc
0041953C 68C80E4200       push $00420ec8
00419541 E82ED9FFFF      call stuffB
Project16.dpr.38: end.
00419546 E831C7FEFF      call @Halt0
Das bedeutet nun dass man "const [Ref]" als Ersatz für "var" nehmen könnte?
  Mit Zitat antworten Zitat
Fritzew

Registriert seit: 18. Nov 2015
Ort: Kehl
678 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dll-Methodenparameter von var nach const ändern

  Alt 20. Jan 2017, 10:09
Zitat:
Das bedeutet nun dass man "const [Ref]" als Ersatz für "var" nehmen könnte?
Ja genau dafür ist [REF] gedacht.
Fritz Westermann
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz