Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Fehler Meldung vom Demo Datenbank Beispiel ??? (https://www.delphipraxis.net/162761-fehler-meldung-vom-demo-datenbank-beispiel.html)

maxcom24 4. Sep 2011 22:50

Datenbank: MYSQL • Version: 5.5.15 • Zugriff über: libmysql.dll

Fehler Meldung vom Demo Datenbank Beispiel ???
 
Hallo Zusammen

Ich hab mir das Tutorial von http://www.michael-puff.de/Programmi...phi/Tutorials/ runtergeladen und wollte mir anschauen wie der Aufbau ist.
Leider kommt immer eine Fehlermeldung beim Programm wenn ich eine Funktion bestätige.

Fehlermeldung:

Im Projekt AdressDBSQL.exe ist eine Exception der Klasse EAccessViolation mit der Meldung "Zugriffsverletzung bei Adresse 100047CA in Modul "libmysql.dll" Lesen von adresse 00000358 aufgetreten.


Kann mir jemanden bei dieser Fehlermeldung weiterhelfen, was mache ich falsch ?

gruß
stephan

Luckie 4. Sep 2011 23:07

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Kleiner Tipp, guck dir mal an, was in der Variablen Filename drin steht. Und dann guck mal, ob die Datei existiert. :? Es ist eben nur eine Demo. Dui solltest dich mal mit dem Debugger vertraut machen, dann hättest du den Fehler von alleine gefunden.

maxcom24 4. Sep 2011 23:20

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
also ich habe jetzt filename mit dem genauen Ziel ergänzt.

jetzt bekomme ich aber diese einen Stop bei dieser zeile:

Delphi-Quellcode:
procedure TForm1.btnInsertClick(Sender: TObject);
var
  Kontakt: TKontakt;
  query: string;
  Cols: TCols;
  Rows: TRows;
begin
  with Kontakt do
  begin
    Name := edtName.Text;
    Vorname := edtVorname.Text;
    Strasse := edtStrasse.Text;
    PLZ := StrToInt(edtPLZ.Text);
    Ort := edtOrt.Text;
    Telefon1 := edtTele.Text;
    Telefon2 := edtHandy.Text;
    EMail1 := edtMail.Text;
  end;
[COLOR="Red"] if Insert(Kontakt) then[/COLOR] <<<< Hier bleibt Delphi stehen :(
  begin
    query := 'SELECT * FROM kontakte ORDER BY name, vorname';
    log(query);
    ExecQuery(DBNAME, query, Cols, Rows);
    FillGrid(StringGrid1, Cols, Rows);
  end
  else
    log(mysql_error(Descriptor));
end;

Luckie 4. Sep 2011 23:29

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Was heißt stehen bleibt?

Und bitte benutze die Code-Tags, dann wird das ganze lesbarer.

maxcom24 4. Sep 2011 23:42

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also wenn ich den Button Importieren drücke passiert folgende Fehlermeldung (siehe Anhang).

Kann es sein das ich MySQL 5... benutze und nicht wie im Demo 4.1 ?


Delphi-Quellcode:
procedure Import(const Filename: string);
var
  sl: TStringList;
  i: Integer;
  StringArray: TStringDynArray;
  Kontakt: TKontakt;
begin
  StringArray := nil;
  sl := TStringList.Create;
  try
    sl.LoadFromFile('C:\Users\Stephan\Desktop\AdressDBSQL\Adressen.csv');
    for i := 1 to sl.Count - 1 do
    begin
      StringArray := Explode(';', sl.Strings[i]);
      with Kontakt do
      begin
        // Name;Vorname;Strasse;PLZ;Ort;Land;Telefon1;Telefon2;Fax;EMail1;
        // EMail2;URL;GebDat;Firma;Position
        Name := StringArray[0];
        Vorname := StringArray[1];
        Strasse := StringArray[2];
        PLZ := StrToIntDef(StringArray[3], 0);
        Ort := StringArray[4];
        Telefon1 := StringArray[6];
        Telefon2 := StringArray[7];
        Fax := StringArray[8];
        EMail1 := StringArray[9];
        EMail2 := StringArray[10];
        Url := StringArray[11];
        GebDat := StringArray[12];
        Firma := StringArray[13];
      end;
      Insert(Kontakt);
    end; <<< Wenn ich auf anhalten drücke zeigt mir Delphi diese Stelle Rot Markiert
  finally
    FreeAndNil(sl);
  end;
end;

Luckie 4. Sep 2011 23:45

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Er bekommt keine Verbindung zur Datenbank, weil der Descriptor nil ist. Ich weiß aber nicht warum.

Hier
Delphi-Quellcode:
function Connect(Descriptor: PMYSQL; const Host, User, PW, DB: string; Port:
  Integer): PMYSQL;
begin
  result := mysql_real_connect(Descriptor, PChar(Host), PChar(User),
    PChar(PW),
    PChar(DB), PORT, nil, 0);
end;
schlägt es fehl. Danach ist der Descriptor nil und somit schlägt dann das Insert auch fehl.

maxcom24 4. Sep 2011 23:52

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
mmm... dann werde ich mal in dieser nacht versuchen den fehler zu finden ... danke Lucky

maxcom24 5. Sep 2011 00:01

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
kannst du mal das demo programm bei dir ausprobieren, ob es bei dir läuft ?

Luckie 5. Sep 2011 00:07

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Das mache ich schon die ganze Zeit, sonst wüsste ich nicht, wo der Fehler liegt.

Luckie 5. Sep 2011 00:17

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Fehler gefunden: LIBMYSQL_INCOMPATIBLE = 2; // A DLL was found but it is not compatible

Und das bei Delphi 7 und Windows XP.

maxcom24 5. Sep 2011 00:22

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Hallo Lucky ..

ich hab Delphi 2010 prof ... und Windows 7 ...

bedeutet das, dass es auch bei mir nicht geht :wall:

Luckie 5. Sep 2011 00:25

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Debugg doch das ganze mal! Wenn du an der Stelle in der mysql.pas:
Delphi-Quellcode:
function libmysql_load(name: pChar): byte;

  procedure assign_proc(var proc: FARPROC; name: pChar);
  begin
    proc := GetProcAddress(libmysql_handle, name);
    if proc = nil then libmysql_status := LIBMYSQL_INCOMPATIBLE;
  end;

begin
  libmysql_free;
  if name = nil then name := 'libmysql.dll';
  libmysql_handle := LoadLibrary(name);
  if libmysql_handle = 0 then libmysql_status := LIBMYSQL_MISSING
  else begin
    libmysql_status := LIBMYSQL_READY;
    assign_proc(@mysql_num_rows, 'mysql_num_rows');
    assign_proc(@mysql_num_fields, 'mysql_num_fields');
    // [..]
    assign_proc(@mysql_thread_safe, 'mysql_thread_safe');
  end;
  Result := libmysql_status;
end;
den Staus Code 2 bekommst dann ja. Aber mich wundert das bei mir etwas. Allerdings, glaube ich, ich habe das damals mit D6 unter Windows2000 entwickelt.

maxcom24 5. Sep 2011 00:59

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
bekomme sofort beim debugen die fehlermeldung ???

Sir Rufo 5. Sep 2011 00:59

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Mal ne ganz andere Frage:

Ich vermute mal, dass du da eine CSV Datei mit Adressen in den MySQL Server pusten möchtest.

Warum so umständlich?

MySQL kann so eine CSV in einem Rutsch einlesen und gut.

maxcom24 5. Sep 2011 01:08

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Danke für deinen Tip :thumb:

aber unser problem ist, dass wir keine verbindung zur datenbank bekommen.

du kannst uns ja gerne helfen, dass die demo auch auf neuere systeme läuft.

http://www.michael-puff.de/Programmi...lphi_Demos.zip

ich würde mich freuen, wenn du die antwort für uns hast :cyclops:

himitsu 5. Sep 2011 04:31

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Zitat:

Delphi-Quellcode:
result := mysql_real_connect

Wenn das vermutlich fehlschlägt, wieso prüft man nicht gleich dort mal nach?

Delphi-Quellcode:
Result := mysql_real_connect(...);
if not Assigned(Result) then
  raise Exceoptopn.Create(mysql_error...(...)); // irgendwo sollten diese lib ja die zugehörige Fehlermeldung liefern

DeddyH 5. Sep 2011 07:06

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Könnte das evtl. noch mit Unicode zusammenhängen?

Luckie 5. Sep 2011 08:39

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Nein. Bei mir Mit Delphi 7 funktioniert es auch nicht (mehr*).


*) Es hat ja mal funktioniert, allerdings mit Delphi 6 und unter Windows XP. Kann auch sein, dass ich damals eine andere DLL hatte, weil ich sie irgendwie zwischenzeitlich mal verloren hatte oder so.

Und warum so umständlich? Weil es eine Demo für eine MySQL Datenbank ist.

@maxcom24: Was für Code meinst du (siehe PN)? Ich habe hier nur den Code aus der mysql.pas und meinem Programm gepostet, um zu zeigen, wo der Fehler im Programm ist. Von einer Lösung habe ich nie etwas geschrieben.

Sir Rufo 5. Sep 2011 08:45

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Zitat:

Zitat von Luckie (Beitrag 1121721)
Und warum so umständlich? Weil es eine Demo für eine MySQL Datenbank ist.

Egg Yes ... Ei Ja ... ;)

Das umständlich bezog sich aber mehr darauf, dass maxcom24 versucht eine CSV-Datei aufzudröseln in einen Record schiebt und dann an mysql übergibt.
Dafür gibt es in mysql einen Einzeiler und die gesamte CSV-Datei ist im Sack (gut, die Zeile ist sehr lang ... aber es bleibt ein Einzeiler) ;)

Das ist nicht nur vom ansteuern einfach ... sondern auch Hölle-schnell

Irgendwie habe ich doch auch im Kopf, das er eigentlich die MyDAC-Konponenten benutzt
Warum dann also generell dieser insgesamt umständliche Weg? :gruebel:

Luckie 5. Sep 2011 08:58

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Das weiß ich nicht. Aber im Moment scheint er sich mit nacktem MySQL zu beschäftigen und hat dazu mein Demo hervorgekramt. Und vergess einfach, das es eine CSV Datei ist, darum geht es nicht.

Sir Rufo 5. Sep 2011 09:05

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Zitat:

Zitat von Luckie (Beitrag 1121726)
Das weiß ich nicht. Aber im Moment scheint er sich mit nacktem MySQL zu beschäftigen und hat dazu mein Demo hervorgekramt. Und vergess einfach, das es eine CSV Datei ist, darum geht es nicht.

Ich habe mir in der Zwischenzeit mal die Demo angeschaut ... ok ... ich halte mich da jetzt raus (was die CSV betrifft) :mrgreen:

maxcom24 5. Sep 2011 12:54

AW: Fehler Meldung vom Demo Datenbank Beispiel ???
 
Richtig, ich beschäftige mich nur mit dem MySql von der Demo, und da hab ich das problem gehabt, dass das Demo Programm nicht lief, und daraus würde dieser Thread so lang :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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