AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Access Violation at Adress.....
Thema durchsuchen
Ansicht
Themen-Optionen

Access Violation at Adress.....

Offene Frage von "Bieberpelz"
Ein Thema von Bieberpelz · begonnen am 12. Nov 2005
Antwort Antwort
Bieberpelz

Registriert seit: 15. Aug 2005
12 Beiträge
 
#1

Access Violation at Adress.....

  Alt 12. Nov 2005, 11:32
Datenbank: MySQL • Version: ka • Zugriff über: ODBC glaube ich aber ka
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.
http://foto.arcor-online.net/palb/al...6432313665.jpg
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:
type
  TPostEntry = record
    level: Integer;
    charname: String[50];
    exp: Integer;
  end;
  TPostEntries = Array of TPostEntry;
Und hier die Prozedur. Die DB liegt auf einem Internet server
Delphi-Quellcode:
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;
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.
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz