Entwickler-Ecke

Sonstiges (Delphi) - MySQLDirect-Zugriff funzt nicht


rob87 - Fr 04.01.08 10:40
Titel: MySQLDirect-Zugriff funzt nicht
Hallo

ich weiß nicht, ob mir des hier einer beantworten kann bzw. beantwortet, aber ich poste mal mein Problem, da ich mich eg ned extra deswegen an nem anderen Forum anmelden will

Ich habe das Tutorial von: http://www.dsdt.info/tutorials/mysqldirect/ ausprobiert und komm auch bis zu dem Bereich der DB-Verbindung wunderbar klar.

Aber nun wollt ich eine Abfrage machen und damit ein StringGrid füllen (Seite 4).

Nun bekomm ich allerdings die Fehlermeldung:
Zitat:
Undefinierter Bezeichner: TableStructure


Nun hab ich die Prozedur TForm1.TableStructure weggelassen und mit procedure TableContent weitergemacht. Aber nun bekomm ich die Fehlermeldung, dass der Bezeichner TResult undefiniert ist.

Wo zum ** muss ich die denn noch eintragen?


Moderiert von user profile iconjasocul: Topic aus Datenbanken verschoben am Fr 04.01.2008 um 10:46


jasocul - Fr 04.01.08 10:45

Sind ja eigentlich zwei Fragen, aber ich bin heute sozial eingestellt.

zu TResult:
Es gibt in dem Tutorial kein TResult, sondern nur FResult. Einfach mal korrigieren.

zu TabelStructure (Vermutung):
Du musst die Methode natürlich auch im Interface-Teil (dort in der Klasse TForm1) natürlich auch deklarieren. Dann ist es kein undefinierter Bezeichner mehr.


rob87 - Fr 04.01.08 11:00

Also zu TableStructure:
Ich hab die Methode nun deklariert (Hab des schon vermutet, aber war mir nocht sicher zwecks Sender: TObject oder so??):

Delphi-Quelltext
1:
2:
3:
4:
5:
type
...
    procedure TableStructure( ?? );
private
...

Nun krieg ich die Meldung
Zitat:
Ungenügende Forward- oder External-Deklaration..

Brauch wahrsch. noch irgendnen Sender

Und dann noch zu FResult:
Ich hatte vorher schon FResult gemeint (steht auch so in meinem Code)
Nur mich verwundert es, dass ich, wenn ich ne Abfrage mache und des FResult verwende, alles in ORdnung ist. Wenn ich ich hingegen das FResult in TableContent verwende, meckert er.

Aber er mecket ned bei dem TableContent (denn deas brauch ich ja ned zu deklarieren), sondern bei dem FResult???


jasocul - Fr 04.01.08 11:23


Delphi-Quelltext
1:
2:
3:
4:
5:
type
...
    procedure TableStructure;
private
...

Also genauso, wie du es im Implementation-Bereich verwendest.

Für TableContent gilt das selbe. Da scheint ein Fehler im Tutorial zu sein, soweit ich das sehen kann. Das muss dann auch TForm1.TableContent heißen. FResult ist ja als Variable im Private-Teil von TForm1 definiert.


rob87 - Fr 04.01.08 11:29

Aber bei mir heißt das Formular, wo sich das Ganze abspielt frmMainF

Dann muss ich das vor die Methode setzen??

Ich poste einfach mal die relevanten Code-Schnipsel:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
unit frmMain;

interface

uses
  ...

type
  TfrmMainF = class(TForm)
    ...
    procedure TableStructure();

...
...
procedure TfrmMainF.TableStructure;
var
  i, j : integer
begin
  //noch leer
end;

Des war des eine
...
und des is die zweite Prozedur:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.TableContent;
var
  i, j : integer;
  af : TMysql_FieldDef;
  cr : integer;
begin
  if assigned(FResult) then begin
    if FResult.ResultType=rtStored then begin
    ...
    end;
  end;
end;


Übrigens vielen Dank, dass mir auf beide Fragen geantwortet wird. *g* Aber es überschneidet sich ja auch bissal. ;-)