AGB  ·  Datenschutz  ·  Impressum  







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

OOP - Neuling braucht ein bisschen Hilfe

Ein Thema von Liam · begonnen am 21. Mai 2010 · letzter Beitrag vom 23. Mai 2010
Antwort Antwort
Seite 1 von 2  1 2      
Liam

Registriert seit: 21. Mai 2010
11 Beiträge
 
Turbo Delphi für Win32
 
#1

OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 09:14
Hiho,

ich hab noch nicht lange OOP und ich brüte grade über einer Aufgabe und komme nicht weiter. Ich hab eine Radiogroup mit 4 EInträgen (wovon ich jewals immer den Titel wieder ausgeben will, z.B. Verbrennungsmotor)

Allerdings kommen (im Moment) 2 Fehlermeldungen: Nicht genügent wirkliche Parameter und Inkompatible Typen. Wie geb ich den Klassennahmn in der Memo aus? Und Hier muss auch noch eine Unit dazu, wo Alternativfahrzeuge (Elektro, Wasserstoff) definiert werden (soweit bin ich aber noch nicht).

Delphi-Quellcode:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, unit2, unit3;

type
  TForm1 = class(TForm)
    RadioGroup1: TRadioGroup;
    Memo1: TMemo;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Auto: TFahrzeug;
  M_Leistung: string;
  M_Bezeichnung: boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioGroup1.itemindex=0 then
Auto:= TFahrzeug.create(Edit1.text, Radiogroup1.itemindex=0);
{If RadioGroup1.itemindex=1 then
Auto := TAlternativfahrzeug.create(Edit1.text,  Edit3.text);}

If Radiogroup1.itemindex=2 then
Auto:= THybridfahrzeug.create (Edit1.text, Edit2.text);
{If RadioGroup1.ItemIndex=3 then
Auto := TAlternativfahrzeug.create (Edit1.text, Edit3.text);}


//memo1.lines.add:=M_Leistung;

end;

end.
Delphi-Quellcode:
unit Unit2;
//Fahrzeug allgemein
interface
uses sysutils;
Type TFahrzeug = class (TObject)
  private
  public
   constructor create (M_Bezeichnung: string; M_Leistung: string);
   function getleistung: string;
   //function getMotorBezeichnung: string;
   //function getreichweite: integer; virtual; abstract;
end;
var Bezeichnung: string;
Leistung: string;
M_Leistung, M_Bezeichnung: string;


implementation

constructor TFahrzeug.create (M_Bezeichnung: string; M_Leistung: string);
begin
M_Bezeichnung :=Bezeichnung ;
M_Leistung :=Leistung ;
end;

function TFahrzeug.getleistung: string;
begin
   result := M_Leistung ;
end;

end.
Delphi-Quellcode:
unit Unit3;
//Fahrzeug Hybrid
interface
uses sysutils, unit2;
Type THybridfahrzeug = class (TFahrzeug)
  private
  public
   constructor create (M_Bezeichnung: string; M_Leistung, E_M_Leistung: string);
   //function getleistung: string; virtual;
   //function getMotorBezeichnung: string;
   //function getreichweite: string; virtual; abstract;
end;
var Bezeichnung: string;
Leistung, Zusatzleistung:string;
M_Leistung: string;


implementation

constructor THybridfahrzeug.create (M_Bezeichnung: string; M_Leistung,E_M_Leistung: string);
begin
inherited create (Bezeichnung, Leistung);
E_M_Leistung := Zusatzleistung;
end;



end.
MfG & Danke schonmal im Vorraus
Liam
  Mit Zitat antworten Zitat
AnyKey

Registriert seit: 15. Apr 2008
173 Beiträge
 
#2

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 09:24
Ich würde mal behaupten du solltest dir in deine RadioGroup auch ein paar RadioButtons einbauen und dann prüfen welches gesetzt ist in etwa so:

Delphi-Quellcode:
if RadioButton1.Checked then
begin
  // tue was
end;
das sollte dich erst mal weiter bringen.

Aso an den Text aus den RadioButtons kommst du dann so ran:

RadioButton1.Caption
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#3

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 09:35
Hallo Liam,

Herzlich Willkommen in der DP!

Auto:= TFahrzeug.create(Edit1.text, Radiogroup1.itemindex=0); Der Fehler werden wohl hier kommen. Radiogroup1.itemindex=0 ist ein Boolean! TFahrzeug.create erwartet aber einen String als 2ten Parameter.

Ich würde weiterhin
a) Die Komponenten auf der Form (Edit1, Edit2 etc) richtig benennen
b) Konsequent einrücken
c) Anstatt if ItemIndex=1 if ItemIndex=2 if ItemIndex=3 etc ein Case-Construct nehmen

@AnyKey: Bitte nicht auf = True prüfen!
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
Liam

Registriert seit: 21. Mai 2010
11 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:07
Danke für eure Hilfe ihr beiden. Ich hab die If-Anweisungen mal in eine Case gepackt, und jetzt hab ich auch kein Problem mehr mit inkompatiblen Typen. Allerdings kommt jetzt folgende Meldung:

"Konstantenausruck erwartet"

Delphi-Quellcode:
var
  Form1: TForm1;
  Auto: TFahrzeug;
  M_Leistung: string;
  M_Bezeichnung: string;
  Bezeichnerwahl: boolean;


procedure TForm1.AnlegenClick(Sender: TObject);
 begin
  case Bezeichnerwahl of
   Radiogroup1.itemindex=0 :
    begin
     M_Bezeichnung:= 'Verbrennungsmotor';
    end;
   Radiogroup1.itemindex=1 :
    begin
     M_Bezeichnung:= 'Elektromotor';
    end;
   Radiogroup1.itemindex=2 :
    begin
     M_Bezeichnung:= 'Hybridantrieb';
    end;
   Radiogroup1.itemindex=3 :
    begin
     M_Bezeichnung:= 'Wasserstoffantrieb';
    end;
  end;
Da ich nicht mehr wusste, wie man eine Case-Anweisung schreibt, hab ich mal im Internet geschaut und unter anderem folgendes gefunden:

Delphi-Quellcode:
var Note: Integer;
    Wertung: String;

CASE Note OF
  1 : Wertung := 'Sehr gut';
  2 : Wertung := 'Gut';
  3 : Wertung := 'Befriedigend';
  4 : Wertung := 'Ausreichend';
  5 : Wertung := 'Mangelhaft';
  6 : Wertung := 'Ungenügend';
  ELSE Wertung := 'Diesen Notenwert gibt es nicht.';
END; //von CASE
Bei diesem Beispiel ist es ja auch nicht anders geschrieben als wie bei mir.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#5

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:19
Zitat von Liam:
Bei diesem Beispiel ist es ja auch nicht anders geschrieben als wie bei mir.
Öhm... doch. Schau doch mal genau hin. Deine Syntax bim Case-Statement ist eine völlig andere.
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#6

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:23
Statt
Delphi-Quellcode:
case Bezeichnerwahl of
   Radiogroup1.itemindex=0 :
    begin
versuche einmal
Delphi-Quellcode:
case Bezeichnerwahl of
   Radiogroup1.itemindex=StrToInt('0') :
    begin
Gruss

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:24
Zitat von NamenLozer:
Öhm... doch. Schau doch mal genau hin. Deine Syntax bim Case-Statement ist eine völlig andere.
So als Tipp: "Note" entspricht deinem "Radiogroup1.itemindex"
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Liam

Registriert seit: 21. Mai 2010
11 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:36
Zitat von Wolfgang Mix:
Statt
Delphi-Quellcode:
case Bezeichnerwahl of
   Radiogroup1.itemindex=0 :
    begin
versuche einmal
Delphi-Quellcode:
case Bezeichnerwahl of
   Radiogroup1.itemindex=StrToInt('0') :
    begin
Gruss

Wolfgang

Leider funtkioniert das auch nicht. Selber fehler.
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#9

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:47
hoi,

mal als Bsp.

Delphi-Quellcode:
case Boolean of
  True: ...
  False:...
end;

oder

case Zahl of
  0:
  1:
  2:
end;
in deiner Case anweisung hast du zwar eine Boolean Var verwendet (Bezeichnerwahl) aber das ist nicht das was du
eigentlich prüfen willst (--> ItemIndex).

Die einzelnen Zustände (True/False ; 0/1/2 ; etc) kannst du dann direkt hinschreiben.

cya
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: OOP - Neuling braucht ein bisschen Hilfe

  Alt 21. Mai 2010, 20:49
.. wenn alle Tips nicht helfen:

Delphi-Quellcode:
procedure TForm1.AnlegenClick(Sender: TObject);
begin
  case RadioGroup1.itemIndex of
   0 :
    begin
     M_Bezeichnung:= 'Verbrennungsmotor';
    end;
   1 :
    begin
     M_Bezeichnung:= 'Elektromotor';
    end;
   2 :
    begin
     M_Bezeichnung:= 'Hybridantrieb';
    end;
   3 :
    begin
     M_Bezeichnung:= 'Wasserstoffantrieb';
    end;
  end;
denn es ist der ItemIndex der sich ändert wenn
du einen RadioButton der RadioGroup anklickst.

OT:
was hat das mit OOP zu tun

Grüße
Klaus
Klaus
  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 10:46 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