AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klasse/Methoden

Ein Thema von muster2002 · begonnen am 27. Sep 2004 · letzter Beitrag vom 28. Sep 2004
Antwort Antwort
Seite 1 von 2  1 2      
muster2002

Registriert seit: 27. Sep 2004
7 Beiträge
 
#1

Klasse/Methoden

  Alt 27. Sep 2004, 09:45
Habe folgendes Problem mit der Klasse vorgaben:

Wenn ich auf Gruppen zugreife, stürzt das Program ab.


Delphi-Quellcode:
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.
[edit=Luckie]Delphi-Tags eingefügt. Mfg, Luckie[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Klasse/Methoden

  Alt 27. Sep 2004, 09:49
Zitat von muster2002:
Wenn ich auf Gruppen zugreife, stürzt das Program ab.
Mit was für einer Fehlermeldung?

Das
form2.edit1.text:= gruppenstr; kommt mir spanisch vor. Sollte es nicht andersrum heißen?

Erzeugst du die Klasse auch irgendwo, bevor du sie benutzt? Eventuell hilft mein Klassen Tutorial: http://tutorials.luckie-online.de
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
muster2002

Registriert seit: 27. Sep 2004
7 Beiträge
 
#3

Re: Klasse/Methoden

  Alt 27. Sep 2004, 09:52
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.
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Klasse/Methoden

  Alt 27. Sep 2004, 10:00
Du hast da was vergessen
Code:
constructor tvorgaben.create;
begin
  [color=#f50000]inherited Create;[/color]
  Gruppen:=0;
  Staebchen:=0;
  user:=false;
  wert_vorgabe:=false;
end;
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Klasse/Methoden

  Alt 27. Sep 2004, 10:06
Hi muster2002,

so wie Luckie sagt, erst die Instanz kreieren!

Außerdem würde ich die Klasse klarer definieren.

Delphi-Quellcode:
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;
Außerdem ist es nicht sehr elegant innerhalb einer Objectmethode auf eine globale Variable zuzugreifen.

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
  Mit Zitat antworten Zitat
muster2002

Registriert seit: 27. Sep 2004
7 Beiträge
 
#6

Re: Klasse/Methoden

  Alt 27. Sep 2004, 10:18
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
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Klasse/Methoden

  Alt 27. Sep 2004, 10:34
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
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#8

Re: Klasse/Methoden

  Alt 27. Sep 2004, 10:39
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:
Var
  Vorgabe : TVorgaben;
Begin
  Vorgabe := TVorgaben.Create; // <--- !!!!

  Vorgabe.Staebchen := 4;
  Vorgabe.Gruppen := 17;
  
  Vorgabe.Free;
End;
MfG
Muetze1
  Mit Zitat antworten Zitat
muster2002

Registriert seit: 27. Sep 2004
7 Beiträge
 
#9

Re: Klasse/Methoden

  Alt 27. Sep 2004, 20:36
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.
  Mit Zitat antworten Zitat
Benutzerbild von Nothine
Nothine

Registriert seit: 3. Jul 2004
Ort: Mülheim an der Ruhr
198 Beiträge
 
Delphi 5 Enterprise
 
#10

Re: Klasse/Methoden

  Alt 27. Sep 2004, 20:44
Zitat von muster2002:
Das Textfeld ist nur zur Kontrolle, ob in Gruppen was drinnen steht.
wenn du unbedingt kontrollieren willst wäre sowas wahrscheinlich einfacher:
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;
if ThisPost is senseless then
ThisPost.WasPostedBy := SomeoneElse();
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:52 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