![]() |
Klasse/Methoden
Habe folgendes Problem mit der Klasse vorgaben:
Wenn ich auf Gruppen zugreife, stürzt das Program ab.
Delphi-Quellcode:
[edit=Luckie]Delphi-Tags eingefügt. Mfg, Luckie[/edit]
unit UVorgaben;
interface uses UNimm,Uform2; type tvorgaben = class(tnimm) private public Gruppen : integer; Staebchen : integer; user : boolean; wert_vorgabe : boolean; constructor create; procedure set_gruppen(gruppenstr :string); end; implementation uses sysutils; constructor tvorgaben.create; begin Gruppen:=0; Staebchen:=0; user:=false; wert_vorgabe:=false; end; procedure tvorgaben.set_gruppen(gruppenstr :string); begin form2.edit1.text:= gruppenstr; gruppen:=strtoint(gruppenstr); end; end. |
Re: Klasse/Methoden
Zitat:
Das
Delphi-Quellcode:
kommt mir spanisch vor. Sollte es nicht andersrum heißen?
form2.edit1.text:= gruppenstr;
Erzeugst du die Klasse auch irgendwo, bevor du sie benutzt? Eventuell hilft mein Klassen Tutorial: ![]() |
Re: Klasse/Methoden
Das Textfeld ist nur zur Kontrolle, ob in Gruppen was drinnen steht.
In der nächsten Zeile stürzt es ab mit der Fehlermeldung, dass der Arbeitsspeicher leer ist.(FFFFFF) Ich kann zip und pdf nicht öffnen, bin in der Schule. |
Re: Klasse/Methoden
Du hast da was vergessen :zwinker:
Code:
...:cat:...
constructor tvorgaben.create;
begin [color=#f50000]inherited Create;[/color] Gruppen:=0; Staebchen:=0; user:=false; wert_vorgabe:=false; end; |
Re: Klasse/Methoden
Hi muster2002,
so wie Luckie sagt, erst die Instanz kreieren! Außerdem würde ich die Klasse klarer definieren.
Delphi-Quellcode:
Außerdem ist es nicht sehr elegant innerhalb einer Objectmethode auf eine globale Variable zuzugreifen.
type
TVorgaben = class(tnimm) private FUser: boolean; FWert_Vorgabe: boolean; FStaebchen: integer; FGruppen: integer; procedure SetGruppen(const Value: integer); procedure SetStaebchen(const Value: integer); procedure SetUser(const Value: boolean); procedure SetWert_Vorgabe(const Value: boolean); public constructor create; property Gruppen : integer read FGruppen write SetGruppen; property Staebchen : integer read FStaebchen write SetStaebchen; property user : boolean read FUser write SetUser; property wert_vorgabe : boolean, read FWert_Vorgabe write SetWert_Vorgabe; end; Das tust du in deiner Set-Methode für Form2. Hier solltest du entweder eine Variable FForm2 in deiner Klasse halten und dieses Formular in deinem Create erzeugen, oder ganz darauf verzichten. Gruß oki |
Re: Klasse/Methoden
Mit Inherited funktioniert es nicht, denn ich greife auf die Eigenschaften des Vorfahren überhaupt nicht zu.
Das zweite ist nicht der Fehler! Es werden nur Lese und Schreibrechte zugewiesen! Bitte helft mir! muster2002 |
Re: Klasse/Methoden
Hi,
inherited ist zwingend erforderlich!!!! Da ist es egal, ob du auf Vorfahren zugreifst. Da du einen eigenen Konstruktor definierst mußt du inherited create aufrufen, sonst wird keine Instanz deines Objektes erstellt. Also, mach es einfach mal und du wirst sehen das es funzt. Gruß oki |
Re: Klasse/Methoden
Moin!
Ob du auf Eigenschaften des Vorfahren zugreifst oder nicht ist doch völligst egal. Das Inherited Create muss in den Constructor rein als erstes ... Und bisher wissen wir nicht wie du auf die Klasse von aussen zugreifst, also ob du wirklich eine Instanz anlegst - was ich (und die anderen wohl auch) nicht glauben - weil sonst würde es nicht zu dieser Fehlermeldung kommen.
Delphi-Quellcode:
MfG
Var
Vorgabe : TVorgaben; Begin Vorgabe := TVorgaben.Create; // <--- !!!! Vorgabe.Staebchen := 4; Vorgabe.Gruppen := 17; Vorgabe.Free; End; Muetze1 |
Re: Klasse/Methoden
Ich habe es mit inherited ausprobiert, es liegt nicht daran.
Aber ich lasse es natürlich drin. Ich habe 2 Formulare angelegt und 2 Units. Ich habe die Klasse Vorgabe als Nachfahre von Nimm deklariert. Ich habe die Instanz erzeugt, denn ich habe auf sie zugegriffen, indem ich einfach einen Wert aus der Combobox einem Textfeld zugewiesen habe. Also muss es doch die Klasse Vorfahren geben. Aus dem Quelltext von oben: form2.edit1.text:= gruppenstr; Erst jetzt stürzt es ab: gruppen:=strtoint(gruppenstr); muster2002 P.s. Sorry, für meinen Ausdruck, aber ich bin nicht im Deutsch Leistungskurs. |
Re: Klasse/Methoden
Zitat:
Delphi-Quellcode:
uses Dialogs;
... procedure tvorgaben.set_gruppen(gruppenstr: string); begin ShowMessage(gruppenstr); //keine globalen Variablen, weniger Probleme Gruppen := StrToIntDef(gruppenstr,0); //nicht jeder string-wert ist ein gültiger Integer end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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 by Thomas Breitkreuz