Einzelnen Beitrag anzeigen

teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#8

Re: [MySQL] überprüfen ob ein Datensatz existiert

  Alt 8. Aug 2005, 08:24
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
  Mit Zitat antworten Zitat