![]() |
Speicheradressen von 2 Variablen Vertauschen?
Guten Morgen erstmal... :thumb:
in nachfolgendem Codeschnippsel will ich einfach nur die Adressen der beiden Variablen vertauschen, und nun die Frage...Warum gehts net...hab auch jetzt ne Zeit lang gesucht aber nix im Forum gefunden...
Delphi-Quellcode:
schonmal vielen Danke für die Antworten
procedure TForm1.Button1Click(Sender: TObject);
var ax,by: integer; begin ax := 1; by := 9; label1.Caption := IntToStr(ax)+' '+IntToStr(by); tausche(@ax,@by); Label2.Caption := IntToStr(ax)+' '+IntToStr(by); end; procedure TForm1.tausche(a,b: pointer); var ptemp: pointer; begin ptemp := a; a := b; b := ptemp; end; mfg therian :spin: |
Re: Speicheradressen von 2 Variablen Vertauschen?
Hoi
Delphi-Quellcode:
So sollte es gehen. Braucht dann auch kein @ beim Aufruf.
procedure Swap(var A, B);
var C: Pointer; begin Move(A, C, SizeOf(C)); Move(B, A, SizeOf(C)); Move(C, B, SizeOf(C)); end; Gruss Shaman |
Re: Speicheradressen von 2 Variablen Vertauschen?
hm, funzt net so wirklich...
braucht man in der deklaration denn keine Typen? und warum funzt meine Variante net...? |
Re: Speicheradressen von 2 Variablen Vertauschen?
Komisch, bei mir funktioniert es tip top...
|
Re: Speicheradressen von 2 Variablen Vertauschen?
Hm..., die Adresse einer benannten Variablen kann man gar nicht ändern. Sieh dir mal die Fehlermeldung an wenn man deb folgenden Code ausführt.
Delphi-Quellcode:
procedure Tausche(var A, B);
var C: Pointer; begin Move(A, C, SizeOf(C)); Move(B, A, SizeOf(C)); Move(C, B, SizeOf(C)); end; procedure TForm1.FormCreate(Sender: TObject); var ax,by: integer; begin ax := 1; by := 9; label1.Caption := IntToStr(ax)+' '+IntToStr(by); tausche(@ax,@by); Label2.Caption := IntToStr(ax)+' '+IntToStr(by); end; |
Re: Speicheradressen von 2 Variablen Vertauschen?
Delphi-Quellcode:
Ohne @-Zeichen, das ist ja das Schöne.
tausche(@ax,@by);
Gruss Shaman |
Re: Speicheradressen von 2 Variablen Vertauschen?
Und noch eine möglichkeit:
Delphi-Quellcode:
procedure Swap(var X, Y: Pointer);
asm mov ecx, [edx] xchg [eax], ecx mov [edx], ecx end; |
Re: Speicheradressen von 2 Variablen Vertauschen?
danke für die vielen Antworten....jetzt funktionierts
|
Re: Speicheradressen von 2 Variablen Vertauschen?
Hi Shaman
Zitat:
Delphi-Quellcode:
Ciao HeZa
oldAdr := Integer(@ax);
Swap(ax,by); if oldAdr = Integer(@ax) then ShowMessage('War wohl nichts.'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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