Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi gibt es swap (https://www.delphipraxis.net/31724-gibt-es-swap.html)

ferby 13. Okt 2004 05:58


gibt es swap
 
Hallo,

Ich weiß das es bei DElphi sowas wie eine Swap funktion gibt, bin mir halt zimlich sicher...

Jedenfalls versteh ich nicht wie das genau geht.
Ich habe zwei integer Variabel. z.B: i und j

Jetzt will ich das die beiden Inhalte getauscht werden. Wie ich sie mit einer dritten Variabel tausche weiß ich aber gibts da nicht sowas wie swap (i,j) ????


Danke für hilfe!
Ferby

Dax 13. Okt 2004 06:17

Re: gibt es swap
 
Das gibt es schon, allerdings als Assembler-Statement:
Delphi-Quellcode:
asm
  xchg i, j
end;
Dieser Code tauscht (wie in deiner Frage) die zwei Variablen. Frage mich nicht, wie, denn das weiss ich auch nicht... ;)

ferby 13. Okt 2004 17:00

Re: gibt es swap
 
Hallo,

Ich habe ausprobiert:

Delphi-Quellcode:
    asm
    xchg eingabe[y], eingabe[y+1]
    end;

wobei eingabe eine array of integer ist. es kommt die fehlermeldung

[Fehler] Unit1.pas(60): Ungültige Kombination von Opcode und Operanden


was ist falsch?

Nikolas 13. Okt 2004 17:03

Re: gibt es swap
 
Meinst du die Swapfunktion aus den Sortier-Tutorials? Die musst du die selbst bauen.
Delphi-Quellcode:
procedure Swapvalues(var x,y: integer);
var
dummy: integer;
begin
dummy:=x;
x:=y;
y:= dummy;
end;
Wichtig ist nur das var, sonst passiert da nichts.

glkgereon 13. Okt 2004 17:10

Re: gibt es swap
 
ja, assembler kann wahrscheinlich nicht mit arrays umgehen...

es gab auch ma ein verfahren ohne hilfsvariablen...
Delphi-Quellcode:
x:=x xor y;
y:=x xor y;
x:=x xor y;
hier der thread dazu:
http://www.delphipraxis.net/internal...=hilfsvariable


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 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