Hallo marabu,
Zitat von
marabu:
Zitat von
teebee:
Das Problem liegt nicht darin, dass das Array Posts die Länge 0 hat, dann würde High nämlich einfach -1 zurückliefern und alles wäre ok.
In meinen Programmen resultiert dynArray = nil aus SetLength(dynArray, 0).
In meinen auch. Aber High funktioniert trotzdem und liefert dann -1
Zitat von
marabu:
Zitat von
teebee:
Die
AV kommt ja außerdem aus der libmysql.dll und nicht aus der Anwendung.
Das behauptet der thread owner, der gezeigte code gibt das aber nicht her.
Doch. wenn _myres Nil ist, kommt es beim Aufruf von mysql_num_rows() genau dazu. (s.u)
Zitat von
marabu:
Zitat von
teebee:
Hier verhält es sich so, dass _myRes Nil ist, wenn die Ergebnismenge leer ist.
Diese Implikation ist definitiv falsch. Die Kontrollstruktur für den result set wird auch für die leere Menge erzeugt.
Für eine SELECT-
query (die wir hier ja zweifellos haben) hast Du allerdings recht.
Zitat von
marabu:
Zitat von
teebee:
Der darauffolgende Aufruf von mysql_num_rows() mit Nil als Argument führt zu der
AV.
Tatsächlich produziert der Aufruf von mysql_num_rows(nil) eine
AV, wenn aber _myres nil ist, dann nicht wegen eines leeren result set, sondern eher wegen einer fehlerhaften
query.
Stimmt natürlich, s.o.
_myRes sollte trotzdem auf Nil geprüft werden, wenn auch nicht, um eine leere Ergebnismenge abzufragen.
Gruß, teebee