AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

freiwillige Parameter

Ein Thema von jjep · begonnen am 9. Okt 2007 · letzter Beitrag vom 9. Okt 2007
Antwort Antwort
Seite 2 von 2     12   
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#11

Re: freiwillige Parameter

  Alt 9. Okt 2007, 10:57
Zerbrecht euch nicht den Kopf wegen mir.
Meine Funktion funktioniert super.
Danke
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: freiwillige Parameter

  Alt 9. Okt 2007, 12:01
Zitat von jjep:
Zerbrecht euch nicht den Kopf wegen mir.
Meine Funktion funktioniert super.
Danke
Es geht auch manchmal im Forum um prinzipielle Fragen von Lösungen (welche jetzt besser ist ect.) die durch simple Anfängerfragen ausgelöst werden und dann mehrere Seiten lang werden kann.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

Re: freiwillige Parameter

  Alt 9. Okt 2007, 12:08
Das bei cdecl es möglich ist verschieden viel auf den Stack zu packen war mir schon klar. Was mich dabei interessiert. Kann man irgendwie feststellen wieviel auf dem Stack liegt?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#14

Re: freiwillige Parameter

  Alt 9. Okt 2007, 12:24
Nur, wenn du den originalen Stack Pointer weisst - also ESP bevor der Aufrufer angefangen hat die Parameter auf den Stack zu legen...
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#15

Re: freiwillige Parameter

  Alt 9. Okt 2007, 14:26
Nur über Umwege:
Man gibt als ersten Parameter mit, wieviele noch kommen. Oder der letzte Parameter ist ein definierter Wert.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#16

Re: freiwillige Parameter

  Alt 9. Okt 2007, 14:33
Zitat von sirius:
Oder der letzte Parameter ist ein definierter Wert.
Nicht eher der Erste? Der Letzte ist immer ESP-4...
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#17

Re: freiwillige Parameter

  Alt 9. Okt 2007, 14:59
Ich meinte nicht auf dem Stack, sondern einfach in Pascal gedacht
(wenn z.B. Parameter "c" -1 ist, dann gibt es kein "d" mehr)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: freiwillige Parameter

  Alt 9. Okt 2007, 15:07
Aso, stimmt, so kann man das auch noch betrachten. Klaro, wäre auch eine Möglichkeit...
  Mit Zitat antworten Zitat
Win32.API

Registriert seit: 23. Mai 2005
312 Beiträge
 
#19

Re: freiwillige Parameter

  Alt 9. Okt 2007, 15:14
Ueber diesen Umwege wuerde es gehen:

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  windows;

procedure foo(i1,i2,i3 : Integer); cdecl;
var
   dwReturnAddress,dwParamCount : DWord;
begin
  asm
    push dword ptr [ebp + 4]
    pop [dwReturnAddress]
  end;

  dwParamCount := pByte(dwReturnAddress + 2)^ div 4;
  writeln(dwParamCount);
end;

begin
  foo(1,2,3);
  readln;
end.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: freiwillige Parameter

  Alt 9. Okt 2007, 15:21
Solange es weniger als 33 Parameter sind

Edit: Muss mich korrigieren. Auf Grund von Big Endian klappt es auch, dass man auf einen integer mit pByte zugreifen kann --> also kleiner 65 Parameter
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 04:15 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