Anzahl Parameter bei Funktionsaufruf beschränkt?
Moderator: Moderatoren
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Anzahl Parameter bei Funktionsaufruf beschränkt?
Hallo,
ist das ein Bug oder korrekt?????
Bei einem Funktionsaufruf werden nur die ersten 7 Parameter erkannt.
Gruß Stefan
ist das ein Bug oder korrekt?????
Bei einem Funktionsaufruf werden nur die ersten 7 Parameter erkannt.
Gruß Stefan
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Hallo, Stefan -
ich habe Funktionen, die deutlich mehr Parameter entgegennehmen, und das funktioniert.
Kannst Du mal ein kleines Code-Beispiel bereitstellen?
Oder versuche das mal aus:
ich habe Funktionen, die deutlich mehr Parameter entgegennehmen, und das funktioniert.
Kannst Du mal ein kleines Code-Beispiel bereitstellen?
Oder versuche das mal aus:
Code: Alles auswählen
FUNCTION MAIN
TestMe(1, 2, 3, 4, 5, 6, 7, 8, 9, 109
RETURN(.T.)
FUNCTION TestMe(p1, p,2 p,3 p,4 p,5 p,6 p,7 p,8 p9, p10
? p1
? p2
? p3
? p4
? p5
? p6
? p7
? p8
? p9
? p10
PAUSE
RETURN(.T.)
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Die Anzahl kann es eigentlich nicht sein....
type("__WIN") ergibt "U"
Anderer Versuch:
type("__WIN") ergibt "U"
Gruß Stefan
Code: Alles auswählen
if choice2(10,28,"Programm beenden?","Nein","Ja","W+/R","W/B",.T.) = "Ja"
FUNCTION choice2( __yy,__xx,__txt,__field1,__field2,__colup,__colstd,__win,__colhi )
Anderer Versuch:
Code: Alles auswählen
if _choice2(10,28,{"Programm beenden?","Nein","Ja"},"W+/R","W/B",.T.) = "Ja"
FUNCTION _choice2( __yy,__xx,aFelder,__colup,__colstd,__win,__colhi )
Gruß Stefan
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Hallo, Stefan -
benenne mal Deine Parameter um. Ist nur so ein Gedanke, aber eventuell kollidierst Du mit was Internem wegen der Unterstriche vor dem Variablennamen?
benenne mal Deine Parameter um. Ist nur so ein Gedanke, aber eventuell kollidierst Du mit was Internem wegen der Unterstriche vor dem Variablennamen?
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Hallo Georg,
leider keine Änderung.....
Gruß Stefan
leider keine Änderung.....
Gruß Stefan
- Herbert
- Der Entwickler von "Deep Thought"
- Beiträge: 1991
- Registriert: Do, 14. Aug 2008 0:22
- Wohnort: Gmunden am Traunsee, Österreich
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Wäre eigentlich erstaunlich gewesen, denn:
Ich vermute, der 7. oder 8. Varialenname blockiert dich. Nenne die __colstd und/oder die __win mal um.Der Name für eine Instanzvariable unterliegt den gleichen Konventionen wie normale Variablennamen. Er muß mit einem Unterstrich oder einem Buchstaben beginnen und kann ansonsten aus alphanumerischen Zeichen bestehen. Es sind die ersten 255 Zeichen signifikant
Grüsse Herbert
Immer in Bewegung...
Immer in Bewegung...
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Hallo, Stefan -
also, ich habe das mal in dieses Programm umgesetzt:
Als erstes fällt mir auf, dass Du nur acht Parameter übergibst, aber neun erwartest.
Dann habe ich das Programm mal laufen lassen und im Debugger im choice2() angehalten:
Ich würde mal davon ausgehen, dass es bei mir korrekt funktioniert, da __win mit dem Wert .T. angezeigt wird, und der neunte (nicht übergebene Parameter) __colhi den Wert NIL hat.
Ich verwende solche kurzen Programme, wenn ich den Eindruck habe, dass Xbase++ sich nicht regelkonform verhält. Läuft das kurze Programm wie erwartet, dann muss ich die Fehlerursache in meinem Code suchen.
also, ich habe das mal in dieses Programm umgesetzt:
Code: Alles auswählen
#INCLUDE "Xbp.CH"
FUNCTION Main()
if choice2(10,28,"Programm beenden?","Nein","Ja","W+/R","W/B",.T.) = "Ja"
ConfirmBox(, "done.", "done", XBPMB_INFORMATION, XBPMB_OK)
ENDIF
RETURN (.T.)
FUNCTION choice2( __yy,__xx,__txt,__field1,__field2,__colup,__colstd,__win,__colhi )
? __yy
?__xx
?__txt
?__field1
?__field2
?__colup
?__colstd
?__win
?__colhi
wait
RETURN("Ja")
Dann habe ich das Programm mal laufen lassen und im Debugger im choice2() angehalten:
Ich würde mal davon ausgehen, dass es bei mir korrekt funktioniert, da __win mit dem Wert .T. angezeigt wird, und der neunte (nicht übergebene Parameter) __colhi den Wert NIL hat.
Ich verwende solche kurzen Programme, wenn ich den Eindruck habe, dass Xbase++ sich nicht regelkonform verhält. Läuft das kurze Programm wie erwartet, dann muss ich die Fehlerursache in meinem Code suchen.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Hi,
ich habe deine Zeilen oben auch umgesetzt und kann Georg bei diesem Test nur zustimmen:
ergibt dieses Ergebnis (wie bei Georg auch):
So, wieso kannst du dann ein anderes Ergebnis haben ?
Es könnte grundsätzlich an einer unterschiedlichen Xbase++ Version liegen (ich habe 1.90.355 getestet), aber das glaube ich hier nicht.
Ich habe früher häufiger viele Parameter benutzt und noch nie Probleme gehabt.
ABER es kann sehr wohl an den Namen liegen, wenn du eine INCLUDE Datei nutzt, die einen Teilbegriff einer Variable gegen etwas anderes austauscht !
Also compiliere mal mit dem Parameter /p und untersuche die entstehende PPO-Datei, wenn du in den Zeilen der Funktion dann Änderungen des Namens feststellst,
hast du den Fehler schon gefunden.
ich habe deine Zeilen oben auch umgesetzt und kann Georg bei diesem Test nur zustimmen:
Code: Alles auswählen
procedure main
set alternate to TestParameter.txt
set alternate on
? "Testaufruf starten, Parameter listen"
? choice2(10,28,"Programm beenden?","Nein","Ja","W+/R","W/B",.T.)
return
FUNCTION choice2( __yy,__xx,__txt,__field1,__field2,__colup,__colstd,__win,__colhi )
? "P1 __yy ",ValType(__yy) ,__yy
? "P2 __xx ",ValType(__xx) ,__xx
? "P3 __txt ",ValType(__txt) ,__txt
? "P4 __field1",ValType(__field1),__field1
? "P5 __field2",ValType(__field2),__field2
? "P6 __colup ",ValType(__colup) ,__colup
? "P7 __colstd",ValType(__colstd),__colstd
? "P8 __win ",ValType(__win) ,__win
? "P9 __colhi ",ValType(__colhi) ,__colhi
return "Ende"
Code: Alles auswählen
Testaufruf starten, Parameter listen
P1 __yy N 10
P2 __xx N 28
P3 __txt C Programm beenden?
P4 __field1 C Nein
P5 __field2 C Ja
P6 __colup C W+/R
P7 __colstd C W/B
P8 __win L J
P9 __colhi U NIL
Ende
Es könnte grundsätzlich an einer unterschiedlichen Xbase++ Version liegen (ich habe 1.90.355 getestet), aber das glaube ich hier nicht.
Ich habe früher häufiger viele Parameter benutzt und noch nie Probleme gehabt.
ABER es kann sehr wohl an den Namen liegen, wenn du eine INCLUDE Datei nutzt, die einen Teilbegriff einer Variable gegen etwas anderes austauscht !
Also compiliere mal mit dem Parameter /p und untersuche die entstehende PPO-Datei, wenn du in den Zeilen der Funktion dann Änderungen des Namens feststellst,
hast du den Fehler schon gefunden.
Gruß
Hubert
Hubert
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Ich denke, irgendwo in Stefans Originalcode ist irgendwo ganz schlicht ein Unterstrich zu viel oder zu wenig.
Herzlich,
Tom
Tom
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
nene.... die Unterstriche hab ich richtig gezählt...
Das Beispiel von Georg läuft bei mir auch ohne Probleme...
Ich versuche gerade ein kleines Clipper 5.2 Programm in den Hybrid-Modus zu bringen...
Kann es an der Project Datei liegen?
Das Beispiel von Georg läuft bei mir auch ohne Probleme...
Ich versuche gerade ein kleines Clipper 5.2 Programm in den Hybrid-Modus zu bringen...
Kann es an der Project Datei liegen?
Code: Alles auswählen
[PROJECT]
DEBUG = yes
VERSION = 2.0
PROJECT.XPJ
[PROJECT.XPJ]
PR.exe
[PR.exe]
COMPILE = xpp
COMPILE_FLAGS = /wi /wl /wu /q /w
DEBUG_SAVE = yes
GUI = yes
LINKER = alink
LINK_FLAGS =
RC_COMPILE = arc
RC_FLAGS = /v
// $START-AUTODEPEND
STD.CH
SET.CH
NATMSG.CH
GET.CH
PROMPT.CH
MEMVAR.CH
COLLAT.CH
INKEY.CH
COMMON.CH
A2.obj
RS_LIB.OBJ
// $STOP-AUTODEPEND
A2.PRG
rs_lib.prg
XBTBASE1.LIB
XBTBASE2.LIB
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
baue doch einfach mal die Kontrollausgaben in deine Funktion ein
Eventuell hast du auch an einer Stelle ein Komma zuviel, das gibt auch NIL.
Jedenfalls liegt es nicht am Compiler, es bleiben nur Tippfehler im Code oder eine unglückliche include Datei.
Eventuell hast du auch an einer Stelle ein Komma zuviel, das gibt auch NIL.
Jedenfalls liegt es nicht am Compiler, es bleiben nur Tippfehler im Code oder eine unglückliche include Datei.
Gruß
Hubert
Hubert
- komnick
- UDF-Programmierer
- Beiträge: 75
- Registriert: Mi, 04. Jun 2014 9:56
- Wohnort: Berlin
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 5 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Hallo Stefan,
es besteht ein Unterschied zwischen den Funktionen TYPE() und VALTYPE().
TYPE() liefert nur den Typ von PUBLIC- oder PRIVATE-Variablen, VALTYPE() ist auch für LOCAL- oder STATIC-Variablen anwendbar:
FUNCTION choice2(p1)
TYPE(p1) -> liefert "U"
VALTYPE(p1) -> liefert den wirklichen Typ
Mit bestem Gruß
Martin
-
es besteht ein Unterschied zwischen den Funktionen TYPE() und VALTYPE().
TYPE() liefert nur den Typ von PUBLIC- oder PRIVATE-Variablen, VALTYPE() ist auch für LOCAL- oder STATIC-Variablen anwendbar:
FUNCTION choice2(p1)
TYPE(p1) -> liefert "U"
VALTYPE(p1) -> liefert den wirklichen Typ
Mit bestem Gruß
Martin
-
- brandelh
- Foren-Moderator
- Beiträge: 15696
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
klar doch, das hatte ich übersehenmini990 hat geschrieben: type("__WIN") ergibt "U"
...
type("__WIN") ergibt "U"
...
Gruß Stefan
Gruß
Hubert
Hubert
- mini990
- 1000 working lines a day
- Beiträge: 592
- Registriert: Sa, 28. Jan 2006 9:44
- Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
- Danksagung erhalten: 1 Mal
Re: Anzahl Parameter bei Funktionsaufruf beschränkt?
Danke!
Habe die Type() Abfragen durch valType() ersetzt ---> funktioniert!
Gruß Stefan
Habe die Type() Abfragen durch valType() ersetzt ---> funktioniert!
Gruß Stefan