AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Felder einer Klasse werden nicht erkannt
Thema durchsuchen
Ansicht
Themen-Optionen

Felder einer Klasse werden nicht erkannt

Ein Thema von Ykcim · begonnen am 27. Okt 2012 · letzter Beitrag vom 27. Okt 2012
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#1

Felder einer Klasse werden nicht erkannt

  Alt 27. Okt 2012, 13:15
Hallo Zusammen,

ich mache gerade meine ersten Schritte in der OOP. Das heißt, dass ich erst seit ein paar Tagen mit Klassen arbeite. Eigentlich hat es nach guter Anleitung auch geklappt, aber jetzt stehe ich gerade auf dem Schlauch:

Ich habe eine Klasse definiert und möchte im constructor create Klassenvariablen einen Wert zuweisen. Aber aus irgendeinem Grund knallt es.

Ich habe hier meinen Code:
Delphi-Quellcode:
TFA_Info = class
      strict protected
         FWAAUNR: string;
         FWAAUPO: string;
         FWATENR: string;
         FTEBEZ1: string;
         FLagerBest: string;
         FSicherBest: string;
      public
         constructor create(Grid: TAdvStringGrid; SpalteWAAUNR, SpalteWAAUPO,
                            SpalteWATENR, SpalteTEBEZ1: integer);
         function GetLagerBest: string;
         function GetSicherBest: string;
         function GetWAAUNR: string;
         function GetWAAUPO: string;
         function GetWATENR: string;
         function GetTEBEZ1: string;
         property LagerBestand: string read GetLagerBest;
         property SicherheitsBestand: string read GetSicherBest;
         property WAAUNR: string read GetWAAUNR;
         property WAAUPO: string read GetWAAUPO;
         property WATENR: string read GetWATENR;
         property TEBEZ1: string read GetTEBEZ1;
   end;

Und hier der Implementationsteil

Delphi-Quellcode:
constructor TFA_Info.create(Grid: TAdvStringGrid; SpalteWAAUNR, SpalteWAAUPO,
                            SpalteWATENR, SpalteTEBEZ1: integer);
begin
   FWAAUNR:=Grid.Cells[SpalteWAAUNR,Grid.Row];
   FWAAUPO:=Grid.Cells[SpalteWAAUPO,Grid.Row];
   FWATENR:=Grid.Cells[SpalteWATENR,Grid.Row];
   FTEBEZ1:=Grid.Cells[SpalteTEBEZ1,Grid.Row];

   Main.MySelectQuery.SQL.Clear;
   Main.MySelectQuery.SQL.Add('select sum(LSLGBE) from oms14 ');
   Main.MySelectQuery.SQL.Add('where WATENR= :WATENR ');
   Main.MySelectQuery.SQL.Add('group by WATENR');
   Main.MySelectQuery.ParamByName('WATENR').AsString:=FWAAUNR;
   Main.MySelectQuery.Open;
   FLagerBest:=Main.MySelectQuery.Fields.Fields[0].Text;
end;

function TFA_Info.GetLagerBest;
begin
   Result:=FLagerBest;
end;

function TFA_Info.GetSicherBest;
begin
   Result:=FSicherBest;
end;

function TFA_Info.GetWAAUNR;
begin
   Result:=FWAAUNR;
end;

function TFA_Info.GetWAAUPO;
begin
   Result:=FWAAUPO;
end;

function TFA_Info.GetWATENR;
begin
   Result:=FWATENR;
end;

function TFA_Info.GetTEBEZ1;
begin
   Result:=FTEBEZ1;
end;

Hat jemand eine Idee, was ich da falsch mache?

Vielen Dank
Ykcim
Patrick

Geändert von Ykcim (27. Okt 2012 um 13:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: Klassenvariablen werden nicht erkannt

  Alt 27. Okt 2012, 13:24
Ich frag' mal andersrum...

Wie erstellst du die Instanz deiner Klasse?



PS:
Klassenvariablen = class var = "Variablen", welche global für alle Instanzen gelten (alle nutzen das Selbe)
Felder = var (var ist implizit, jeweils am anfang einer Gruppe) = "Variablen" für jede einzelne Instanz (jeder hat seine Eigenen)

Übergibt das MySelectQuery besser auch noch als Parameter und greif nicht über diese globale Variabe drauf zu.

Und FLagerBest ist doch bestimmt eher eine Zahl? (Integer, Double, ...)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (27. Okt 2012 um 13:27 Uhr)
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Felder einer Klasse werden nicht erkannt

  Alt 27. Okt 2012, 13:30
Hallo himitsu,

ich arbeite mit der Klasse, indem ich ein Objekt für sie erstelle.

Hier der Aufruf:
Delphi-Quellcode:
procedure TFrameUebericht.GridUebersichtSelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
var Objekt: TFA_Info;
begin
   Objekt.create(GridUebersicht,0,1,2,3);
   Try
      BezFANr.Caption:=Objekt.WAAUNR;
      BezFAPo.Caption:=Objekt.WAAUPO;
      BezArtikelNr.Caption:=Objekt.WATENR;
      BezArtikelBez.Caption:=Objekt.TEBEZ1;
   Finally
      Objekt.Free;
   End;
end;
Ich habe den Titel geändert, da es ja um Felder und nicht um Klassenvariablen geht. Danke für den Hinweis.

Ykcim
Patrick
  Mit Zitat antworten Zitat
Andreas L.

Registriert seit: 23. Mai 2011
Ort: Furth im Wald
308 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Felder einer Klasse werden nicht erkannt

  Alt 27. Okt 2012, 13:33
Welche Meldung zeigt der Compiler an?

Übrigens: Ich würde Main.MySelectQuery als Parameter im Konstruktor übergeben.

EDIT:
Delphi-Quellcode:
   Objekt.create(GridUebersicht,0,1,2,3); // Falsch
   Objekt := TFA_Info.Create(GridUebersicht,0,1,2,3); // Richtig
Andreas Lauß
Blog
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
826 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Felder einer Klasse werden nicht erkannt

  Alt 27. Okt 2012, 13:38
ICH VOLLPFOSTEN!!!!!

Und an so einer Schuseligkeit sitze ich jetzt seit zwei Stunden und suche die ganze Zeit an der falschen Stelle....

Vielen Dank

Ykcim
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Felder einer Klasse werden nicht erkannt

  Alt 27. Okt 2012, 17:03
ICH VOLLPFOSTEN!!!!!
Das wollen wir mal völlig unkommentiert hier so stehen lassen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#7

AW: Felder einer Klasse werden nicht erkannt

  Alt 27. Okt 2012, 19:08
Wobei er ja nicht der/die Einzige ist, der sowas gemacht hat.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 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