Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Record im Objekt (https://www.delphipraxis.net/74833-record-im-objekt.html)

davar 9. Aug 2006 12:17


Record im Objekt
 
Hallo Leute,

ich versuche nun, mich mit den Themen Records und Klassen vertraut zu machen, hab aber einige Anfangsschwierigkeiten.

Also, ich möchte eine Klasse "Kundendaten" erstellen. Diese Klasse soll über einen Record namens "Kunde" verfügen. Und mit folgendem Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Db, ZQuery, ZMySqlQuery, ZTransact, ZMySqlTr, ZConnect,
  ZMySqlCon;

type
  TKunde = record
    kundennummer: string;
  end;

  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    ds1: TDataSource;
    db1: TZZMySqlDatabase;
    tr1: TZZMySqlTransact;
    query1: TZZMySqlQuery;
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TKundendaten = class(TObject)
    kunde1 : TKunde;
    procedure Kundesuchen;
  end;

var
  Form1: TForm1;
  Kundendaten: TKundendaten;

implementation

{$R *.DFM}

procedure TKundendaten.Kundesuchen;
begin
Form1.query1.sql.text:= 'SELECT * FROM kundendaten';
Form1.query1.Open;
kunde1.kundennummer:= Form1.query1.fieldbyname('ID').AsString;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
Kundendaten.Kundesuchen;
end;

end.
bekomme ich eine Fehlermeldung, und zwar in der Zeile

Delphi-Quellcode:
kunde1.kundennummer:= Form1.query1.fieldbyname('ID').AsString;
Wo denke ich falsch?


MfG

davar

TBx 9. Aug 2006 12:21

Re: Record im Objekt
 
verrätst DU uns evtl. auch die Fehlermeldung?
Die Glaskugelsteuern sind mir einfach zu hoch. :wink:

Gruß

onlinekater

davar 9. Aug 2006 12:35

Re: Record im Objekt
 
Zitat:

Zitat von onlinekater
verrätst DU uns evtl. auch die Fehlermeldung?

wäre wohl von Vorteil.. :oops:

"Zugriffsverletzung bei Adresse ... in Modul 'Project1.exe Schreiben von Adresse ..."

Als wäre hier eine Variable nicht definiert..

Klaus01 9. Aug 2006 12:40

Re: Record im Objekt
 
Kannst Du mal versuchen aus:

Delphi-Quellcode:
type
TKunde = record
  kundennummer: string;
end;
diese zu machen:

Delphi-Quellcode:
type
TKunde = record
  kundennummer: string[255];
end;
Grüße
Klaus

davar 9. Aug 2006 12:44

Re: Record im Objekt
 
Nein, das ändert auch nichts. Gleiche Fehlermeldung.

JasonDX 9. Aug 2006 12:44

Re: Record im Objekt
 
Meine Prognose: Das Record ist gesund, aber die Instanz zeigt auf einen Haufen Altpapier...
ein KundenDaten := TKundenDaten.Create(...) sollte helfen ;)

PS:
Zitat:

Zitat von davar
Delphi-Quellcode:
procedure TKundendaten.Kundesuchen;
begin
  Form1.query1.sql.text:= 'SELECT * FROM kundendaten';
  Form1.query1.Open;
  kunde1.kundennummer:= Form1.query1.fieldbyname('ID').AsString;
end;

Iih, mach das Form1 da wech! :zwinker:

greetz
Mike

mkinzler 9. Aug 2006 12:49

Re: Record im Objekt
 
es sieht auch so aus als ob du die Kundenklasse nie instantiiert hättest.

Hawkeye219 9. Aug 2006 13:10

Re: Record im Objekt
 
Zitat:

Zitat von JasonDX
Iih, mach das Form1 da wech! :zwinker:

In diesem Fall nicht, da Form1 <> Self! :wink:

Gruß Hawkeye

JasonDX 9. Aug 2006 13:13

Re: Record im Objekt
 
Zitat:

Zitat von Hawkeye219
Zitat:

Zitat von JasonDX
Iih, mach das Form1 da wech! :zwinker:

In diesem Fall nicht, da Form1 <> Self! :wink:

Ich weiss, deswegen sollte es IMO auch weg! ;)

greetz
Mike

Klaus01 9. Aug 2006 13:17

Re: Record im Objekt
 
Delphi-Quellcode:
procedure TKundendaten.Kundesuchen;
begin
  Form1.query1.sql.text:= 'SELECT * FROM kundendaten';
  Form1.query1.Open;
  kunde1.kundennummer:= Form1.query1.fieldbyname('ID').AsString;
end;
ich bin da nich so fit mit SQL Querys, aber
wenn ich Select * from kundendaten mache
kommt da nicht mehr als ein String zurück?

Kannst Du mal testhalber das Ergebnis von
Form1.query1.fieldbyname('ID').AsString
als Message oder in ein Memofeld ausgeben?

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Seite 1 von 2  1 2      

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