Aktuelle Zeit: 8. Aug 2020, 21:57
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: IF Query on Dim String
BeitragVerfasst: 12. Okt 2018, 23:39 
Offline
Mitglied

Registriert: 20. Sep 2018, 13:21
Beiträge: 31
Land: CH
Betriebsystem: Windows 10
Hallo.
Kann mir jemand helfen?
Ich versuche ein Test auf ein String parameter zu machen

Hier habe ich den Parameters in einen DIM array gespeichert:

Code:
DIM RobVars[2][7]
RobVars[1][1]=R1_Model
RobVars[1][2]=R1_Gravitor
RobVars[1][3]=R1_Pitside
RobVars[1][4]=R1_Distance
RobVars[1][5]=R1_SlabLength
RobVars[1][6]=R1_RRefX
RobVars[1][7]=R1_RRefY

RobVars[2][1]=R2_Model
RobVars[2][2]=R2_Gravitor
RobVars[2][3]=R2_Pitside
RobVars[2][4]=R2_Distance
RobVars[2][5]=R2_SlabLength
RobVars[2][6]=R2_RRefX
RobVars[2][7]=R2_RRefY


Die Parameter R1_Pitside ( RobVars[1][3]) ist ein text Parameter, wahlliste:
VALUES "R1_Pitside","Right","Left"

Wenn ich durch ein GOSUB call versuche ein test auf diesen Array variable zu machen bekomme ich den fehler:
"Numerische Variable erorderlich"

Gosub Call: (vereinfacht)

Code:
"Robots":
   For n= 1 TO 2
         
      Print RobVars[n][3],"\n"
      IF RobVars[n][3] = "Right" THEN
                   !Do something
               ENDIF
       next n
return



Das Print output ist ein String "Right", also müsste funktionieren.

Was habe ich falsch gemacht?

Vielen Dank für Ihre Hilfe :)

Freundliche Grüsse


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF Query on Dim String
BeitragVerfasst: 13. Okt 2018, 12:34 
Offline
Forum Veteran
Benutzeravatar

Registriert: 26. Mai 2002, 01:01
Beiträge: 927
Wohnort: Osterwald
Land: DE
Betriebsystem: MacOS 10.11
Prüfe folgendes:
- Hast Du eine END vor den Subroutinen
- Verwendest Du CALL im Script? Das ist nicht zulässig, da ein reservierter Befehl
- In welchem Script arbeitest Du? Im Master-Script darfst Du kein END vor den Subroutinen verwenden, dafür benötigst Du aber eine GOTO "Masterend"
- hast Du wirklich alle Parameter als STRING angelegt, die Du in Deinen Zuweisungen verwerndest?

Ich bekomme mit Deinem Script im 2D-Script keinen Fehler.

Zitat:
Hier habe ich den Parameters in einen DIM array gespeichert:

Du meinst: Du hast die Parameter in Arrays gespeichert (Parameters ist ein Befehl)?

_________________
ArchiCAD 12 - 24 | iMac 3.5 Ghz | Mac OS X 10.13 | Win 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF Query on Dim String
BeitragVerfasst: 13. Okt 2018, 14:05 
Offline
Mitglied

Registriert: 20. Sep 2018, 13:21
Beiträge: 31
Land: CH
Betriebsystem: Windows 10
Hallo Jochen,
Danke für deine Rückmeldung.
1) Ja, Ich habe ein END vor dem Subroutine
2)Nein, Call verwende ich nicht
3)Ich arbeite in 3D Script
4)Die Parameters sind nicht alle Strings.. can dies das problem sein? Muss alle eintrage einen Array in GDL die selber typ sein (Enweder strings oder numerisch, aber nicht gemischt?)

5) Ja, Ich möchte mehrere gleichige teilen "Robots" in diesem Objekt hinzufügen in verschiedenen benutzer definierten positionen. "R1_xxx" parameters sind die für den ersten Robot, "R2_xxx" sind für den 2ten usw.
Um den Script grösse etwas zu veringern, möchte dies mit ein Array und subroutine lösen. Sonst muss ich die konditionen (die immer gleiche sind) x mal kopieren für jeden roboter.

.... Ich hoffe das meine erklärung so verständlich ist :)

Vielen Dank für deine Hilfe
mfg
Brent


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF Query on Dim String
BeitragVerfasst: 13. Okt 2018, 18:26 
Offline
Forum Veteran
Benutzeravatar

Registriert: 26. Mai 2002, 01:01
Beiträge: 927
Wohnort: Osterwald
Land: DE
Betriebsystem: MacOS 10.11
Array-Variablen können in GDL gemischt sein vom TYp her.
Das wird zwar nicht empfohlen von GS, funktioniert aber.
Es kann jetzt sein, wenn Du in einer Schleife gemischte Arrays abfragt,
dass der Interpreter beim ersten Mal annimt, dass die Arrayvarible immer den selben Typ hat,
und dann einen Fehler ausgibst, wenn der Typ iinerhalb der Schleife wechselt.
Versuche es mal mit einer Fallunterscheidung innerhalb der Schleife, indem Du mit
VARTYPE den Typ abfragst. Das könnte funktionieren, bin mir aber nicht sicher.

_________________
ArchiCAD 12 - 24 | iMac 3.5 Ghz | Mac OS X 10.13 | Win 10


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF Query on Dim String
BeitragVerfasst: 15. Okt 2018, 13:30 
Offline
Forum Veteran
Benutzeravatar

Registriert: 2. Jun 2004, 01:01
Beiträge: 2300
Wohnort: Hamburg
GS hat mir da mal ganz eindeutig mitgeteilt, dass es eher ein bug als ein feature ist, dass gemischte Typen innerhalb eines Skriptes keinen Prüffehler des Skripts ergibt. Unterschiedliche Typen sollten in unterschiedliche Arrays abgelegt werden, was in der Regel ja auch nicht das Problem ist. Da legt man halt 2 an.
Die Aussage von GS bedeutet, dass das Skript mit 22 funktioniert, vielleicht aber kommentarlos mit 23 nicht mehr.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: IF Query on Dim String
BeitragVerfasst: 19. Okt 2018, 21:56 
Offline
Mitglied

Registriert: 20. Sep 2018, 13:21
Beiträge: 31
Land: CH
Betriebsystem: Windows 10
Vielen Dank für eure Hilfe
Ich habe 2 Arrays eingerichtet, eine für strings und eine für numerische variablen.
Funktioniert einwandfreie.
Gruss
Brent


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu: