Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OOP - Neuling braucht ein bisschen Hilfe (https://www.delphipraxis.net/151521-oop-neuling-braucht-ein-bisschen-hilfe.html)

Liam 21. Mai 2010 21:02

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Mit OOP hat das glaub ich nicht wirklich was zu tun. Aber das Programm läuft schonmal, was positiv ist. Nun muss ich die anderen Units so basteln, dass das eingegebene auch angezeigt wird. Hierbei nochmal eine Frage: Wie zeig ich die Klassenbezeichnung im Memo an?

Klaus01 21. Mai 2010 21:12

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Delphi-Referenz durchsuchenTMemo.lines -> Delphi-Referenz durchsuchenTStrings.add

oder einmal deine Deplhi Hilfe bemühen.

Grüße
Klaus

Liam 23. Mai 2010 15:13

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Ich hab wieder ein Problemchen, diesmal bei der Datenausgabe.
Ich hab in der Case-Anweisung die Motorbezeichnung gesetzt, jetzt will ich die auch ausgeben. Allerdings geht es nicht. Ich steh grad irgentwie voll aufm Schlauch :wall:

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;
    Ed_L_H: TEdit;
    Ed_Rw: TEdit;
    Ed_L_E: TEdit;
    Anlegen: TButton;
    procedure AnlegenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

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

implementation

{$R *.dfm}

procedure TForm1.AnlegenClick(Sender: TObject);
 begin
  case Radiogroup1.itemindex of
   0:
    begin
     Bezeichnung := 'Verbrennungsmotor';
     Memo1.lines.Add(M_Bezeichnung);
    end;
   1 :
    begin
     M_Bezeichnung:= 'Elektromotor';
    end;
   2 :
    begin
     M_Bezeichnung:= 'Hybridantrieb';
    end;
   3 :
    begin
     M_Bezeichnung:= 'Wasserstoffantrieb';
    end;
  end;
  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; virtual;
   //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
  Bezeichnung := M_Bezeichnung ;
  M_Leistung :=Leistung ;
 end;

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


 function TFahrzeug.getMotorBezeichnung: string;
 begin
   result:= Bezeichnung;
 end;



end.

mkinzler 23. Mai 2010 15:19

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Delphi-Quellcode:
  case Radiogroup1.itemindex of
   0:
    begin
     Bezeichnung := 'Verbrennungsmotor';
    end;
   1 :
    begin
     M_Bezeichnung:= 'Elektromotor';
    end;
   2 :
    begin
     M_Bezeichnung:= 'Hybridantrieb';
    end;
   3 :
    begin
     M_Bezeichnung:= 'Wasserstoffantrieb';
    end;
    else
    begin
     M_Bezeichnung:= ';
    end;
    if M_Bezeichnung <> '' then        
        Memo1.lines.Add(M_Bezeichnung);
  end;

Liam 23. Mai 2010 19:03

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Ich habs jetzt mal mit dieser Variante versucht:

Delphi-Quellcode:
procedure TForm1.AnlegenClick(Sender: TObject);
 begin
  case Radiogroup1.itemindex of
   0:
    begin
     Bezeichnung := 'Verbrennungsmotor';
     Auto:=TFahrzeug.create(Radiogroup1.Items.GetText, Ed_L_H.Text);
     Memo1.lines.Add := Auto.getDaten;
    end;
Delphi-Quellcode:
constructor TFahrzeug.create (M_Bezeichnung: string; M_Leistung: string);
 begin
  Bezeichnung := M_Bezeichnung ;
  Leistung :=M_Leistung ;
 end;

...


 function TFahrzeug.getDaten: string;
  begin
    result:= Bezeichnung + Leistung;
  end;
Hier hab ich jetzt wieder das anfangsproblem. Inkompatible Typen und nicht genügend wirkliche Parameter bei der Zeile Memo1.lines.Add := Auto.getDaten;

Und ich hab grad echt ein Brett vorm Kopf (wohl eher ne Bohle)

Klaus01 23. Mai 2010 20:19

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Guten Abend,

Zitat:

Zitat von DelphiHilfe
Lists the radio buttons in the radio group.

Class
TCustomRadioGroup

Syntax


property Items: TStrings read FItems write SetItems;


Description
Items holds a TStrings object that lists the captions of the radio buttons in the group. In TCustomRadioGroup descendants, where this property is published, radio buttons can be added or removed by editing the Items list from the Object Inspector.

Was Du vermutlich suchst ist das:
Zitat:

Zitat von DelphiHilfe
Indicates which radio button in the group is currently selected.

Class
TCustomRadioGroup

Syntax


property ItemIndex: Integer read FItemIndex write SetItemIndex;


Description
ItemIndex holds the index of the selected radio button in the Items list. (The first button is 0.) The value of ItemIndex changes at runtime as the user selects radio buttons. If you want one of the buttons to appear selected when the application starts, assign that button to ItemIndex at design time; otherwise, leave ItemIndex set to the default value of -1, which means that no button is selected.

[edit] bzw. eine Kombination aus beiden.
Delphi-Quellcode:
begin
  case Radiogroup1.itemindex of
   0:
    begin
     Bezeichnung := 'Verbrennungsmotor';
     Auto:=TFahrzeug.create(Radiogroup1.Items[RadioGroup1.ItemIndex], Ed_L_H.Text); // oder auch
     // Auto:=TFahrzeug.create(Bezeichnung, Ed_L_H.Text); // oder auch
     //Auto:=TFahrzeug.create(Radiogroup1.Items[0], Ed_L_H.Text);

     Memo1.lines.Add := Auto.getDaten;
    end;
.. und gewöhn Dich mal an die Regel "eine Frage pro Thread"

Grüße
Klaus

Liam 23. Mai 2010 23:13

Re: OOP - Neuling braucht ein bisschen Hilfe
 
Vielen vielen Dank :thumb:
diese Variante hat mir geholfen:
Auto:=TFahrzeug.create(Radiogroup1.Items[0], Ed_L_H.Text);
Jetzt läuft alles. Die Ausgaben der Klasse und in ein Memo statt Edit bekomm ich auch noch irgentwie hin :)

Lg
Liam


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr.
Seite 2 von 2     12   

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