Debugger und Parameterübergabe

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Debugger und Parameterübergabe

Beitrag von saul »

Hallo,
ich rufe mein Programm "Programm.exe W.Kerkhoff spair", teilweise "Programm.exe W.Kerkhoff spair camo" auf. Im Programm frage ich diese Parameter dann ab.

Code: Alles auswählen

proc main
  para eing1, eing2, eing3
....
return
Ergebnis eing1=W.Kerkhoff, eing2=spair

Arbeite ich mit dem Debugger heißt der Aufruf "xppdbg Programm.exe W.Kerkhoff spair camo". Ergebnis eing1=Programm.exe, eing2=W.Kerkhoff, eing3=spar.

Was mache ich falsch? In der Hilfe steht drin, dass man die Parameter beim Debugger ebenfalls hinter den Programmaufruf stellt.

mfg
Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Debugger und Parameterübergabe

Beitrag von georg »

Hallo, Wolfgang -


Du machst nichts falsch, der Debugger macht es falsch.

Jimmy kann Dir sicherlich das PDR nennen, aber so isses.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Debugger und Parameterübergabe

Beitrag von Dieter »

Hallo Wolfgang,
du übergibst ja tatsachlich drei Parameter an xppdbg.
Ich würde auf die Parameters-Anweisung verzichten, die ja Private-Variable erzeugt und die zwei von dir gewünschten Parameter direkt über main(p1,p2) aufrufen.
Die Parameter sind dann lokale Variable und erheblich schneller in der Ausführung. Solltest du unbedingt Private-Variable benötigen, dann kannst du ja eine Private-Anweisung nach main(p1,p2) ausführen lassen.
Z.B.:

Code: Alles auswählen

Private eing1 := p1
Private eing2 := p2
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Debugger und Parameterübergabe

Beitrag von UliTs »

Hallo Wolfgang,

Benutze einfach den VX-Debugger. Da gibt es das Problem meines Erachtens nicht.

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Debugger und Parameterübergabe

Beitrag von AUGE_OHR »

saul hat geschrieben:Arbeite ich mit dem Debugger heißt der Aufruf "xppdbg Programm.exe W.Kerkhoff spair camo". Ergebnis eing1=Programm.exe, eing2=W.Kerkhoff, eing3=spar.

Was mache ich falsch? In der Hilfe steht drin, dass man die Parameter beim Debugger ebenfalls hinter den Programmaufruf stellt.
PDR 5332 -> Hotfix 36

p.s. versuche es mal mit PValue()
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Debugger und Parameterübergabe

Beitrag von georg »

Hallo, Dieter -


es macht im Verhalten keinen Unterschied, ob man

FUNCTION MAIN(p1, p2)

oder

FUNCTION MAIN
PARAMETERS p1, p2

verwendet. Da der Debugger als ersten Parameter den Namen des Programms erhält, gibt er die erhaltenen Parameter unverändert weiter.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Debugger und Parameterübergabe

Beitrag von AUGE_OHR »

georg hat geschrieben: (p1,p2)
vs.
PARAMETERS p1, p2
es gibt doch einen Unterschied
Wenn eine UDF oder eine Prozedur Parameter empfangen kann, werden die Bezeichner für die in Klammern angegeben.
Dadurch werden die Parameter als LOCAL Variablen angelegt.

Die Deklaration von Parametern kann allerdings auch mit dem Schlüsselwort PARAMETERS erfolgen.
In diesem Fall werden die Parameter als Variablen der Speicherklasse PRIVATE erzeugt.
aber das hat mit dem Problem nichts zu tun.
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: Debugger und Parameterübergabe

Beitrag von saul »

Guten Morgen,
kann man sich den Hotfix irgendwo runter laden?

mfg
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Debugger und Parameterübergabe

Beitrag von AUGE_OHR »

saul hat geschrieben:kann man sich den Hotfix irgendwo runter laden?
klar aber das lässt sich Alaska bezahlen, obwohl ja deren Fehler, in Form einer Subscription.
Dann kannst du dich einloggen bei Alaska und die Hotfixe downloaden.
gruss by OHR
Jimmy
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 284
Registriert: So, 26. Mär 2006 12:23

Re: Debugger und Parameterübergabe

Beitrag von saul »

Hallo,
das finde ich gut. Kann ich leider nicht machen. Stürzt bei mir ein Luftfahrzeug ab weil ich einen Fehler gemacht habe, ist Gott sei Dank noch nicht passiert, will mir keiner für die Beseitigung meines Fehlers nochmal etwas bezahlen, im Gegenteil.

Verückte Welt.

Wolfgang
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Debugger und Parameterübergabe

Beitrag von georg »

AUGE_OHR hat geschrieben:
georg hat geschrieben: (p1,p2)
vs.
PARAMETERS p1, p2
es gibt doch einen Unterschied
Wenn eine UDF oder eine Prozedur Parameter empfangen kann, werden die Bezeichner für die in Klammern angegeben.
Dadurch werden die Parameter als LOCAL Variablen angelegt.

Die Deklaration von Parametern kann allerdings auch mit dem Schlüsselwort PARAMETERS erfolgen.
In diesem Fall werden die Parameter als Variablen der Speicherklasse PRIVATE erzeugt.
aber das hat mit dem Problem nichts zu tun.
Hallo, Jimmy -


meine Aussage bezog sich auf das THEMA, und auf nichts anderes. Das Verhalten von XppDbg macht keinen Unterschied, ob die Parameter als LOCAL oder PARAMETERS definiert sind. In beiden Fällen leider XppDbg (ohne HotFix), den ersten Parameter (nämlich den Programmnamen) auch als ersten Parameter an das Programm weiter.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Dieter
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 237
Registriert: Do, 14. Aug 2008 14:59
Wohnort: Straelen
Hat sich bedankt: 2 Mal
Danksagung erhalten: 3 Mal

Re: Debugger und Parameterübergabe

Beitrag von Dieter »

Hallo Wolfgang,
ich habe vor einem Jahr von Version 1.90.331 (mit einer abgelaufenen Subscription) auf 1.90.355 (xpp19sl1.exe +Hotfix Rollups 1-19) updaten können. Den xppdbg-Parameter-Fehler habe ich definitiv nicht. Hast du schon versucht auf 1.90.355 upzudaten?
Man kann von keiner Firma lebenslänglichen Support verlangen und ich werde sobald Alaska eine stabile 2.0 Version herausbringt wieder eine neue Subscription ordern.
Viele Grüße

Dieter

Was man nicht versteht, besitzt man nicht.
Benutzeravatar
Markus Walter
Programmier-Gott
Programmier-Gott
Beiträge: 1018
Registriert: Di, 24. Jan 2006 10:22
Wohnort: Saarland

Re: Debugger und Parameterübergabe

Beitrag von Markus Walter »

Hallo Wolfgang,

eine Alternative wäre, sich der API-Funktion GetCommandLineA() zu bedienen und mit "benamten" Parametern zu arbeiten (z. B. MyProgram user=01 Data=...) und sich dann die Parameter aus dem String raus zu schneiden. Dann spielt auch die Reihenfolge der Parameter keine Rolle und das Debugger-Problem lässt sich umgehen...
Gruß
Markus

Mitglied der XUG Saarland-Pfalz
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2824
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Debugger und Parameterübergabe

Beitrag von georg »

Hallo,


also, nachdem ich seit geraumer Zeit keine Programme mehr einsetze, die Parameter im Aufruf empfangen, habe ich es eben mal nachgestellt und kann mitteilen, dass mit meinem XppDbg 1.90.355 das Problem nicht mehr auftritt.

Ein Upgrade auf die aktuelle Version wäre also etwas, über das man nachdenken sollte.

Auch ein Zugriff auf die Funktion PValue(nPosition) wäre einen Versuch wert, ich fürchte aber, dass sie in Wolfgangs Fall das gleiche (falsche) Ergebnis liefern wird.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Debugger und Parameterübergabe

Beitrag von AUGE_OHR »

georg hat geschrieben:Auch ein Zugriff auf die Funktion PValue(nPosition) wäre einen Versuch wert,
ich fürchte aber, dass sie in Wolfgangs Fall das gleiche (falsche) Ergebnis liefern wird.
es kommt darauf an wie man die Parameter auswertet

Code: Alles auswählen

   imax := PCOUNT()
   IF imax > 0
      FOR i := 1 TO imax
         DO CASE
               // hier läuft der Debugger
            CASE UPPER(  PValue( i ) = UPPER( AppName(.F.) ) .AND. i = 1
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Debugger und Parameterübergabe

Beitrag von AUGE_OHR »

Dieter hat geschrieben:Man kann von keiner Firma lebenslänglichen Support verlangen
... solange es sich um die "selbe" Version handelt ...
üblicherweise gibt es ja im eine "neue" Version und ab da wird der Support für die "alte" Version irgendwann eingestellt.

im übrigen ist es doch so das "Fehler" von "uns" gefunden werden die Alaska bei der Auslieferung "übersehen" hat.
Alaska will dann natürlich ein Demo haben um den BUG zu reproduzieren was "wir" dann anfertigen sollen ... und wer bezahlt das ?
Dieter hat geschrieben:und ich werde sobald Alaska eine stabile 2.0 Version herausbringt wieder eine neue Subscription ordern.
wenn ich eine "stabile" Version habe ... wozu eine Subscription ?

p.s. für die Subscriptionen die ich "gespart" habe kann ich locker "paar" Xbase++ v2.x Lizenzen "neu" kaufen
gruss by OHR
Jimmy
Antworten