![]() |
Felder einer Klasse werden nicht erkannt
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 |
AW: Klassenvariablen werden nicht erkannt
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, ...) |
AW: Felder einer Klasse werden nicht erkannt
Hallo himitsu,
ich arbeite mit der Klasse, indem ich ein Objekt für sie erstelle. Hier der Aufruf:
Delphi-Quellcode:
Ich habe den Titel geändert, da es ja um Felder und nicht um Klassenvariablen geht. Danke für den Hinweis.
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; Ykcim |
AW: Felder einer Klasse werden nicht erkannt
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 |
AW: Felder einer Klasse werden nicht erkannt
ICH VOLLPFOSTEN!!!!!:oops:
Und an so einer Schuseligkeit sitze ich jetzt seit zwei Stunden und suche die ganze Zeit an der falschen Stelle.... Vielen Dank Ykcim |
AW: Felder einer Klasse werden nicht erkannt
Zitat:
|
AW: Felder einer Klasse werden nicht erkannt
Wobei er ja nicht der/die Einzige ist, der sowas gemacht hat.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz