![]() |
Datenbank: MySQL • Version: ka • Zugriff über: ODBC glaube ich aber ka
Access Violation at Adress.....
Ich habe meine ersten Versuche bezüglich MySQL in Delphi gemacht, vorher nur in VB.NET oder PHP oder so.
Es scheint mir halt eine andere Sache zu sein wie bei den Entwicklungsumgebungen. Nun habe ich anhand eine tutorials mir meinen Gewünschten Process zusammengereimt, ich weiß zwar das es nicht sauber ist aber bisher hat es gereicht. Bei mir läuft es wunderbar, bei manch anderen auch nur tritt auf einmal bei mehreren Leuten auch ein Problem auf. Und zwar folgendes habe ich bekommen. ![]() Bisher kann ich den uhrsprung nicht raußfinden und nach Internet suche habe ich nichts brauchbares gefunden da es sich immer um andere .dll oder ka handelte. Ich poste mal den Code des Procedure. Diese wurde im Tutorial genutzt. Würde es am besten ohne aber wegen Verständnis und Zeitdruck bin ich nicht zu gekommen es anders zu machen, es lief ja auch.
Delphi-Quellcode:
Und hier die Prozedur. Die DB liegt auf einem Internet server
type
TPostEntry = record level: Integer; charname: String[50]; exp: Integer; end; TPostEntries = Array of TPostEntry;
Delphi-Quellcode:
Nicht erschrecken, der Code sieht halt schlimm aus da es erster Versuch war und ich froh war das es geht. Und nun kann ich halt nicht Debuggen da der Fehler bei mir ja nicht auftritt.
procedure Tmain.InsertDB(Charname : string; Level : integer; BaseExp : integer);
var //Posts: TPostEntries; query: PChar; queryString : string; _myCon: PMySQL; host, user, pass, db: PChar; _myRes: PMySQL_Res; _myRow: PMySQL_Row; //enthält den aktuellen Datensatz _mySubRow: PMySQL_Row; _mySubRes: PMySQL_Res; charIS : string; Posts: TPostEntries; BaseExpe : integer; idAuthor: String; //zum Zwischenspeichern der Verfasser-ID i: Integer; begin charIS := 'NOT'; host := 'Zensiert'; user := 'Zensiert'; pass := 'Zensiert'; db := 'Zensiert'; //jetzt wird _myCon initialisiert _myCon := mysql_init(nil); if _myCon = nil then begin ShowMessage('Nicht genug freier Speicher, um Verbindungsdeskriptor zu initialisieren'); Exit; end; //anschließend wird die Verbindung hergestellt if mysql_real_connect(_myCon, host, user, pass, db, 3306, nil, 0) = nil then begin Exit; end; //--------------------------------------------- query := 'SELECT * FROM highscore ORDER BY level'; mysql_real_query(_myCon, query, Length(query)); _myRes := mysql_store_result(_myCon); //alle Datensätze vom Server anfordern if _myRes = nil then begin Exit; end; SetLength(Posts, mysql_num_rows(_myRes)); //Posts-Array-Größe auf Anzahl der Datensätze setzen for i := 0 to High(Posts) do begin _myRow := mysql_fetch_row(_myRes); //Datensatz abholen Posts[i].charname := _myRow[0]; //ID des Posts ist erstes Feld im Datensatz //BaseExpe := StrToInt(_myRow[2]); //Posts[i].text := _myRow[3]; //Text ist viertes Feld idAuthor := _myRow[1]; _mySubRes := mysql_store_result(_myCon); if (Charname =_myRow[0]) then begin charIS := 'OK'; BaseExpe := StrToInt(_myRow[2]); end; mysql_free_result(_mySubRes); //Ergebnissatz löschen end; mysql_free_result(_myRes); //Ergebnissätze löschen if (charIS = 'OK') then begin if (BaseExp > BaseExpe) then begin queryString := 'UPDATE highscore SET LEVEL = '+ IntToStr(Level) +', BaseExp = '+ IntToStr(BaseExp) +' WHERE charname = "'+Charname+'"'; query := PChar(queryString); mysql_real_query(_myCon, query, Length(query)); mysql_close(_myCon); end else begin end; end else begin queryString := 'INSERT INTO highscore(charname,LEVEL , BaseExp )VALUES ("'+Charname+'",'+IntToStr(Level)+','+IntToStr(BaseExp)+')'; query := PChar(QueryString); mysql_real_query(_myCon, query, Length(query)); mysql_close(_myCon); end; end; Also wenn mir jemand bezüglich des Fehler helfen könnte, ich wäre dankbar. Wenn jemand tipps für eine bessere Nutzung diese Ergebnisses hat wäre ich es erst recht, ist halt schlecht gelöst. Suchfunktion und Co habe ich genutzt, danke euch. Mfg Bieberpelz P.S. Delphi 6 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz