![]() |
Zahl um +1 erhöhen oder um -1 erniedrigen
Hi.
Ich habe gerade einen kleinen blackout :wall: Habe schon hier im Forum gesucht aber nichts gefunden. Habe folgendes Problem: Ich habe 2 Buttons. Das eine mit -1 und das andere mit +1. Ich möchte damit gerne eine Zahl, zum Beispiel 5, um +1 erhöhen oder um -1 erniedrigen. Meine Frage wäre nun, wie diese Prozedur aussieht. Ich habe dieses Problem damals mal gemacht, aber nun erinnere ich mich nicht mehr dran :cry: Könntet ihr mir weiterhelfen? Ene |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Delphi-Quellcode:
bzw
Inc( zahl);
Delphi-Quellcode:
dec( zahl);
|
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
|
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
performanter (weil ein callstack-aufruf wegfällt) ist
Delphi-Quellcode:
zahl := zahl + 1;
zahl := zahl - 1; |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
was bitte schön ist "callstack"?!
|
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Zitat:
Greetz alcaeus |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Der Aufrufstack. bei jedem Funktionsaufruf wird die Rücksprungadresse auf dem Stack abgelegt.
|
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Zitat:
Aber ok ;) ich nehme das mal so hin ;) |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Zitat:
|
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Zitat:
Zu Dec() und Inc() ist zu sagen, dass diese Funktionen sind, welche dank "Compiler-Magic" ohne solche Stackaufrufe implementiert werden, mit den korrespondieren Prozessorfunktionen ;) Kurz gesagt: störe Dich nicht an dem Geschwafel dazu, kommt noch früh genug ;) ...:cat:... |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
eine funktion ist im Assembler-code (also der endgültigen binären form) nur eine reihe vno anweisungen mit einem RETN (return) am ende. damit dieses RETN aber weiss, wo es weitergeht, wird auf den callstack die adresse des nächsten befehls abgelegt.
Wenn du diesen code hast:
Code:
muss beim ausführen des calls auf den callstack "00x002" abgelegt werden, damit das programm weiss, wohin es zurückspringen soll, wenn die funktion beendet ist.
00x001 CALL 00x003 //funktionsaufruf
00x002 NOP //nix ;) 00x003 NOP //auch nix (genauer gesagt: "No OPeration") 00x004 RETN //zurück zu 00x002 So ungefähr auf jeden Fall... //roter kasten: ja, sakura, da komtm das geschwafel schon :mrgreen: |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
Man merkt das ihr richtig vom Fach seid.
Kurz zusammengefasst interessiert dich die sache mit dem Callstack eigentlich nur wenn du Richtig schnelle Programme schreiben willst. Spätestens dann weist du so was aber eh. Und unser Glück der Compiler macht das hier sowieso gleich. Es gibt aber durchaus sachen die der Compiler nicht mehr wegoptimieren kann und dann ist so ein wissen echt Gold wert. |
Re: Zahl um +1 erhöhen oder um -1 erniedrigen
[OT]
Hab mir gerade noch einmal die Überschrift angeschaut. Irgendwie kommt doch bei "um +1 erhöhen" und "um -1 erniedrigen" so etwa das Gleiche raus :mrgreen: . [/OT] Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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