Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamisches Array und Class (https://www.delphipraxis.net/41767-dynamisches-array-und-class.html)

blacky35 8. Mär 2005 10:20


Dynamisches Array und Class
 
Hallo zusammen,

habe zur Übung folgendes ausprobiert.

Habe eine Klasse TSave in der 3 Werte gerechnet werden.

Da die Klasse u.u. mehrfach durchlaufen werden soll, habe ich für meine Sicherungen einen eigenen Typ erstellt. Die einzelnen Sicherungen sollen in einem Array gespeichert werden. Jetzt soll jede Sicherung die sich im Array befindet, die Klasse TSave benutzen um die 3 Werte für jede Sicherung zu berechnen.
Weiß jetzt jedoch nicht genau wo ich was deklarieren soll.

Mit Sicherung1 und ohne Array hatte alles funktioniert.

Mein Code ist beigefügt:

Delphi-Quellcode:
Unit Sicherung;

interface

type TSave = class(TObject)

private
F_Kraft: Double;
F_Reibwert: Double;
F_Lang: Double;
F_Quer: Double;
F_Hoch: Double;
function getNieder: Double;
function getDirektL: Double;
function getDirektQ: Double;

public
property Kraft: Double write F_Kraft;
property Reibwert: Double write F_Reibwert;
property Lang: Double write F_Lang;
property Quer: Double write F_Quer;
property Hoch: Double write F_Hoch;
property Niederzurrung: Double read getNieder;
property DirektsicherungL: Double read getDirektL;
property DirektsicherungQ: Double read getDirektQ;
end;

implementation

function TSave.getNieder;
begin
result:= F_Hoch/Sqrt(Sqr(F_Lang) + Sqr(F_Hoch) + Sqr(F_Quer)) /2 * F_Kraft * F_Reibwert;
end;

function TSave.getDirektL;
begin
result:= F_Lang/Sqrt(Sqr(F_Lang) + Sqr(F_Hoch) + Sqr(F_Quer)) * F_Kraft;
end;

function TSave.getDirektQ;
begin
result:= F_Quer/Sqrt(Sqr(F_Lang) + Sqr(F_Hoch) + Sqr(F_Quer)) * F_Kraft;
end;

end.


var
  HauptF: THauptF;

implementation

uses Sicherung;

type
TSicherung = record
  sichmittel: string[30];
  kraftmax: string[6];
  kraftist: string[6];
  reibwert: string[4];
  lang: string[4];
  quer: string[4];
  hoch: string[4];
  direktv: boolean;
  direktl: boolean;
  direktr: boolean;
  direkth: boolean;
end;

var //Sicherung: TSicherung;
    Sicherung: array of TSicherung;
    pm, index: Word;
//var Sicherung1: TSave;

{$R *.dfm}

procedure THauptF.FormCreate(Sender: TObject);
begin
HauptF.Height:= 600;
HauptF.Width:= 800;
VorneCk.Enabled:= false;
HintenCk.Enabled:= false;
LinksCk.Enabled:= false;
RechtsCk.Enabled:= false;
FormschlussL.Enabled:= false;
DecimalSeparator:= ',';
end;

procedure THauptF.BerSicherungBClick(Sender: TObject);

var code: Integer; IstKraft, MaxKraft, ReibWert, Lang, Quer, Hoch: Single;
    var Sicherung(1): TSave;
begin
Inc(pm);
//SetLength(Sicherung, pm);
Sicherung(1):= TSave.Create;

Val(MaxKraftE.Text, MaxKraft, code);          
//Val(IstKraftE.Text, IstKraft, code);
Val(ReibwertC.Text, Reibwert, code);    
Val(LangE.Text, Lang, code);            
Val(QuerE.Text, Quer, code);          
Val(HochE.Text, Hoch, code);            
if (IstKraftE.Text <> '') and (IstKraftE.Text <> '0') then
  begin
  Val(IstKraftE.Text, IstKraft, code);
  Sicherung(1).Kraft:= IstKraft;
  end
  else
  begin
//  Sicherung1.Kraft:= MaxKraft;
end;
//Sicherung1.Reibwert:= Reibwert;
//Sicherung1.Lang:= Lang;
//Sicherung1.Quer:= Quer;
//Sicherung1.Hoch:= Hoch;
//NiederL.Caption:= 'Niederzurrung = ' + FloatToStr(Round(Sicherung1.Niederzurrung))
//                  + ' daN';

//DirektLL.Caption:= 'Direktzurrung längs = ' + FloatToStr(Round(Sicherung1.DirektsicherungL))
//                  + ' daN';

//DirektQL.Caption:= 'Direktzurrung quer = ' + FloatToStr(Round(Sicherung1.DirektsicherungQ))
//                  + ' daN';
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:10 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