AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language dynamisches Array in Eigener Klasse kann nicht erzeugt werde
Thema durchsuchen
Ansicht
Themen-Optionen

dynamisches Array in Eigener Klasse kann nicht erzeugt werde

Ein Thema von SimStar001 · begonnen am 21. Mai 2009 · letzter Beitrag vom 21. Mai 2009
Antwort Antwort
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#1

dynamisches Array in Eigener Klasse kann nicht erzeugt werde

  Alt 21. Mai 2009, 08:28
Hallo, hier mal meine neue Klasse:
Delphi-Quellcode:
unit Whazzup;

interface
type TWhazzupData = record
      CallSign : String;
      VID : String[6];
      RealName : String;
      ClientType : String;
      Frequency : String[7];
      Latitude : Extended;
      Longitude : Extended;
      Alitutde : Integer;
      GroundSpeed : Integer;
      Planned_Aircraft : String;
      Planned_WakeTurbulance : String[1];
      Planned_TasCruise : String;
      Planned_DepartureAirport : String[4];
      Planned_Altitude : String;
      Planned_DestinationAirport : String[4];
      Server : String;
      Protrevision : String;
      Rating : String;
      Transponder : String[4];
      FacilityType : String;
      VisualRange : String;
      Planned_Revision : String;
      Planned_FlightType : String[1];
      Planned_DepartureTime : String;
      Planned_ActualDepartureTime : String;
      Planned_HoursEnRoute : String;
      Planned_MinutesEnRoute : String;
      Planned_HoursFuel : String;
      Planned_MiutesFuel : String;
      Planned_AlternateAirport : String[4];
      Planned_Remarks : String;
      Planned_Route : String;
      Planned_DepartureAirportLatitude : Extended;
      Planned_DepartureAirportLongitude : Extended;
      Planned_DestinationAirportLatitude : Extended;
      Planned_DestinationAirportLongitude : Extended;
      ATIS_Message : String;
      Time_LastATISRecieved : String;
      Time_Connected : String;
      Client_SoftwareName : String;
      Client_SoftwareVersion : String;
      Adminrating : String;
      ATC_or_Pilot_Rating : String;
      Planned_AlternatAirport2 : String[4];
      Planned_TypeOfFlight : String[1];
      Planned_PersonsOnBord : String;
      True_Heading : Integer;
      OnGround : Boolean;
      end;

type TWhazzupArray = array of TWhazzupData;

type TWhazzup = class(TObject)
      private
      FWhazzup : TWhazzupArray;

      {read / write functions}
      function readCallSign : String;
      procedure writeCallSign(ACallSign : String);

      public
      property CallSign : string read readCallSign write writeCallSign;

      constructor create;
      destructor destroy; override;

      end;
  

implementation

{Constructor}
constructor TWhazzup.create;
begin

end;

{destructor}
destructor TWhazzup.destroy;
begin

end;

{Read / Write Properties}
function TWhazzup.readCallSign: String;
begin

end;

procedure TWhazzup.writeCallSign(ACallSign : String);
begin

end;

end.

Meine Frage ist jetzt, wenn ich die Klasse erzeuge, dann möchte ich auf die Inhalte von FWhazzup zugreifen. Da FWhazzup ein Array ist, muss ich ja Irgendwie noch einen Index dafür übergeben.
Wie mache ich das am besten?
Das ganze sollte am Ende so aussehen wenn ich es aufrufe:
Delphi-Quellcode:
 Whazzup := TWhazzup.create;
Whazzup[0].CallSign := 'Test';
wie mache ich dass dann in der Klasse mit dem Überabe Index?

Vielen Dank!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Frage zu Array in Eigener Klasse

  Alt 21. Mai 2009, 08:33
das ginge z.B. so:
Delphi-Quellcode:
Private
  Function GetWhazzup(Index: Integer): Whazzup;
  Procedure SetWhazzup(Index: Integer; Const Value: Whazzup);
Public
  Property Whazzup[Index: Integer]: TWhazzupData Read GetWhazzup Write SetWhazzup;
also
Delphi-Quellcode:
Private
  Function GetArrayProp(Param1, Param2, ...): Type;
  Procedure SetArrayProp(Param1, Param2, ..., Type);
Public
  Property ArrayProp[Param1, Param2, ...]: Type Read GetArrayProp Write SetArrayProp;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Frage zu Array in Eigener Klasse

  Alt 21. Mai 2009, 08:35
Vielen Dank, das werde ich gleich mal auasprobieren!
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#4

Re: Frage zu Array in Eigener Klasse

  Alt 21. Mai 2009, 08:56
Ich kann irgendwie die Größe des dynamische Array nicht setzen? Wieso nicht?

Delphi-Quellcode:
procedure TWhazzup.SetLength(AValue : Integer);
begin
  setLength(self.FWhazzup,AValue);
end;
Fehlermeldung ==> [Fehler] Whazzup.pas(99): Inkompatible Typen: 'Integer' und 'dynamic array'
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: dynamisches Array in Eigener Klasse kann nicht erzeugt w

  Alt 21. Mai 2009, 09:06
Wäre eine TObjectList nicht angebrachter und einfacher Hand zuhaben?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Frage zu Array in Eigener Klasse

  Alt 21. Mai 2009, 09:08
Code:
procedure TWhazzup.[b]SetLength[/b](AValue : Integer);
begin
  [b]SetLength[/b](Self.FWhazzup, AValue);
end;
du rufst deine eigene SetLength-Funktion auf und die hat nunmal wirklich nur einen Integer als (ersten) Parameter

entweder anderen Namen für deine Prozedur wählen oder den Namespace verwenden:
Delphi-Quellcode:
procedure TWhazzup.SetLength(AValue : Integer);
begin
  System.SetLength(FWhazzup, AValue);
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:20 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