Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   FireDAC Verbindungsproblem (https://www.delphipraxis.net/193434-firedac-verbindungsproblem.html)

Janninger 30. Jul 2017 23:40

Datenbank: MySQL • Version: 5 • Zugriff über: FireDAC

FireDAC Verbindungsproblem
 
Hallo zusammen,
ich experimentiere im Moment mit FireDAC und MySQL.
Mein Problem ist bei folgendem Quellcode, dass ich nach dem zweiten Ausführen eine Zugriffsverletzung bekomme.

Falls mir hier jemand auf die Sprünge helfen könnte, wäre ich sehr dankbar.

Delphi-Quellcode:
procedure TForm3.Test_ConnectionClick(Sender: TObject);
begin
  FDConnection1.LoginPrompt := False;
  FDConnection1.Connected := False;
  FDConnection1.Params.Clear;
  FDConnection1.Params.Add('DriverID=MySQL');
  FDConnection1.Params.Add('Name=Mysql_Conn');
  FDConnection1.Params.Add('Server=' + IP.Text);
  FDConnection1.Params.Add('Database=' + Database.Text);
  FDConnection1.Params.Add('User_name=' + User.Text);
  FDConnection1.Params.Add('Password=' + Password.Text);
  FDConnection1.Params.Add('Port=' + Port.Text);
  FDConnection1.Connected := True;
  try
    if FDConnection1.Connected then
      WriteRegistry;
    Application.MessageBox('SQL connection successfull!', 'SQL Connection Test',
      MB_ICONINFORMATION or MB_OK);
     FDConnection1.Free;
  Except
    begin
      Application.MessageBox('SQL connection failed! Check SQL settings!',
        'SQL Connection Test', MB_ICONSTOP or MB_OK);
      FDConnection1.Free;
    end;
  end;
end;

himitsu 31. Jul 2017 02:17

AW: FireDAC Verbindungsproblem
 
Tipp: Ersetze mal die
Delphi-Quellcode:
FDConnection1.Free;
durch
Delphi-Quellcode:
FreeAndNil(FDConnection1);
und du dirst dein Problem von ganz alleine finden.


[EDIT]
TComponent räumt die Variable in der Forminstanz von selber auf.

Also was sagt dir der "komplette" Fehler?
Anderer Tipp: in Dialogen und im Compiler-/Debugger-Log kann man Strg+C machen und das alles hier als Text einfügen.

Zitat:

Zugriffsverletzung bei Adresse 00000xx
Was denkst du, will dir das NIL (0 + kleines Offset) denn wohl sagen?
Auch mal das Durchgestrichene lesen und die betroffenen Codezeilen genauer betrachten. :zwinker:


Und für diese Fehlerbehandlung sollte jemand bestraft werden.
Wie kommt man denn bitte auf diese saublöde Idee die eigentliche Fehlermeldung zu vernichten?
Stattdessen einen "nutzlosen" und nichtssagenden Text anzeigen und den Exceptiontext nicht mit anzeigen oder wenigstens zu loggen.

mkinzler 31. Jul 2017 07:28

AW: FireDAC Verbindungsproblem
 
Wenn man nach der Jungfernfahrt das Auto verschrottet, darf man sich nicht wundern, wenn es für keine weitere Fahrt zur Verfügung steht.

Daniel 31. Jul 2017 07:54

AW: FireDAC Verbindungsproblem
 
Zitat:

Zitat von himitsu (Beitrag 1377766)
Und für diese Fehlerbehandlung sollte jemand bestraft werden.
Wie kommt man denn bitte auf diese saublöde Idee die eigentliche Fehlermeldung zu vernichten?
Stattdessen einen "nutzlosen" und nichtssagenden Text anzeigen und den Exceptiontext nicht mit anzeigen oder wenigstens zu loggen.

Ja - inhaltlich das ist das korrekt. Das nächste Mal versuchen wir, das als konstruktiven Hinweis zu formulieren. Sollte sich ein Angesprochener nach so einem Beitrag auf den Schlips getreten fühlen, könnte ich das nachvollziehen.

Janninger 31. Jul 2017 08:30

AW: FireDAC Verbindungsproblem
 
@himitsu:
Danke für deine Antwort und den Fingerzeig. Ich habe habe in letzter Zeit viel mit Memorystream gearbeitet und vermutlich deshalb immer alles .free gesetzt und auch sauber die FireDAC Fehlermeldung mit meiner überschrieben.

@himitsu&daniel
Nein, fühle mich nicht persönlich angegriffen und bin dankbar wenn man fatale Fehler auch als Solche mitteilt. ;)
Denn sonst tritt der Lerneffekt nicht in dem Maße ein.


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