Autor Beitrag
rob87
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: Fr 04.01.08 10:40 
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: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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??):
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 04.01.08 11:23 
ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 461

Win Me, Win XP Home, Win XP Prof
Delphi 2007 Enterprise
BeitragVerfasst: 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:
ausblenden 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:
ausblenden 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. ;-)