AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Speicheradressen von 2 Variablen Vertauschen?
Thema durchsuchen
Ansicht
Themen-Optionen

Speicheradressen von 2 Variablen Vertauschen?

Ein Thema von tHeRiAn · begonnen am 4. Nov 2004 · letzter Beitrag vom 4. Nov 2004
Antwort Antwort
tHeRiAn

Registriert seit: 16. Okt 2003
Ort: Neunkirchen, Siegerland
51 Beiträge
 
Delphi 5 Enterprise
 
#1

Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 10:52
Guten Morgen erstmal...

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:
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;
schonmal vielen Danke für die Antworten
mfg therian
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 11:14
Hoi

Delphi-Quellcode:
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;
So sollte es gehen. Braucht dann auch kein @ beim Aufruf.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
tHeRiAn

Registriert seit: 16. Okt 2003
Ort: Neunkirchen, Siegerland
51 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 11:30
hm, funzt net so wirklich...
braucht man in der deklaration denn keine Typen? und warum funzt meine Variante net...?
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 11:32
Komisch, bei mir funktioniert es tip top...
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#5

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 11:58
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;
  Mit Zitat antworten Zitat
Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 12:01
  tausche(@ax,@by); Ohne @-Zeichen, das ist ja das Schöne.

Gruss
Shaman
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 12:03
Und noch eine möglichkeit:

Delphi-Quellcode:
procedure Swap(var X, Y: Pointer);
asm
    mov ecx, [edx]
    xchg [eax], ecx
    mov [edx], ecx
end;
  Mit Zitat antworten Zitat
tHeRiAn

Registriert seit: 16. Okt 2003
Ort: Neunkirchen, Siegerland
51 Beiträge
 
Delphi 5 Enterprise
 
#8

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 12:05
danke für die vielen Antworten....jetzt funktionierts
  Mit Zitat antworten Zitat
HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#9

Re: Speicheradressen von 2 Variablen Vertauschen?

  Alt 4. Nov 2004, 14:16
Hi Shaman

Zitat von Shaman:
  tausche(@ax,@by); Ohne @-Zeichen, das ist ja das Schöne.
nur das du damit nicht die Adresse sondern nur den Wert der Variablen getauscht hast. Versuch folgendes und staune:
Delphi-Quellcode:
oldAdr := Integer(@ax);
Swap(ax,by);
if oldAdr = Integer(@ax) then ShowMessage('War wohl nichts.');
Ciao HeZa
  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 21:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz