Seite 1 von 1

Frage zu Syntax ProcedureReturn

Verfasst: 31.10.2017 17:58
von Velz
Ich habe eine Frage..

Ich stelle gerade eine schon etwas ältere Anwendung mit MySQL und libmysql.ddl auf die aktuelle PB-version 5.61 und 64 Bit Windows um. Dabei erstetze ich die alte Include Datei durch diese: http://www.purebasic.fr/english/viewtop ... 92&start=0

Als Beispiel diese Prozedur:

Code: Alles auswählen

Procedure MySQL_FinishDatabaseQuery(DataBase)
   If MySQL_FindDataBase(DataBase) = 0
      MySQL_LastErrorFlag = #False
      ProcedureReturn FinishDatabaseQuery(DataBase)
   EndIf
   MySQL_LastErrorFlag = #True
   With MySQL_DBs()
      If \mysqlResult
         MySQL_Free_Result(\mysqlResult)
         \FieldCount  = 0
         \mysqlLen    = 0
         \mysqlRow    = 0
         \mysqlResult = 0
      EndIf
   EndWith
EndProcedure
Was genau mach dieser Befehl???
ProcedureReturn FinishDatabaseQuery(DataBase)

"ProcedureReturn" ist dabei natürlich klar und wird im speziellen Fall auch genutzt um die Prozedur zu beenden.
Aber weshalb ruft dieser die eigene Prozedur auf?? Warum gibt das keinen Fehler??
Kann mich dazu jemand erhellen?

Ach ja... die Include ist wirklich super.. vielen Dank an HeX0R aus dem englischen Forum...

Re: Frage zu Syntax ProcedureReturn

Verfasst: 31.10.2017 18:38
von GPI
Die Procedure heißt MySQL_FinishDatabase() und nach Procedurereturn stehtn FinishDatabase()
das sind zwei verschiedene Proceduren

Falls es ein Macro gibt, das FinishDatabase auf MySQL_FinishDatabase() umbiegt - das kommt garantiert nach der Procedure und gilt nur ab der Zeile der Definition. Betrifft also die Stelle nicht.

Ansonsten: Fehlermeldungen gibt es nicht, wenn eine Procedure sich immer wieder selbst aufruft. Das ist durchaus erlaubt. Nur irgendwann wird das Programm abschmieren, weil der Stack überläuft.

Re: Frage zu Syntax ProcedureReturn

Verfasst: 31.10.2017 19:43
von Velz
Danke.. absolut korrekt. Manchmal interpretiert man sich ins Nirwana...