![]() |
dynamisches Array in Eigener Klasse kann nicht erzeugt werde
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:
wie mache ich dass dann in der Klasse mit dem Überabe Index?
Whazzup := TWhazzup.create;
Whazzup[0].CallSign := 'Test'; Vielen Dank! |
Re: Frage zu Array in Eigener Klasse
das ginge z.B. so:
Delphi-Quellcode:
also
Private
Function GetWhazzup(Index: Integer): Whazzup; Procedure SetWhazzup(Index: Integer; Const Value: Whazzup); Public Property Whazzup[Index: Integer]: TWhazzupData Read GetWhazzup Write SetWhazzup;
Delphi-Quellcode:
Private
Function GetArrayProp(Param1, Param2, ...): Type; Procedure SetArrayProp(Param1, Param2, ..., Type); Public Property ArrayProp[Param1, Param2, ...]: Type Read GetArrayProp Write SetArrayProp; |
Re: Frage zu Array in Eigener Klasse
Vielen Dank, das werde ich gleich mal auasprobieren!
|
Re: Frage zu Array in Eigener Klasse
Ich kann irgendwie die Größe des dynamische Array nicht setzen? Wieso nicht?
Delphi-Quellcode:
Fehlermeldung ==> [Fehler] Whazzup.pas(99): Inkompatible Typen: 'Integer' und 'dynamic array'
procedure TWhazzup.SetLength(AValue : Integer);
begin setLength(self.FWhazzup,AValue); end; |
Re: dynamisches Array in Eigener Klasse kann nicht erzeugt w
Wäre eine TObjectList nicht angebrachter und einfacher Hand zuhaben?
|
Re: Frage zu Array in Eigener Klasse
Code:
du rufst deine eigene SetLength-Funktion auf und die hat nunmal wirklich nur einen Integer als (ersten) Parameter :zwinker:
procedure TWhazzup.[b]SetLength[/b](AValue : Integer);
begin [b]SetLength[/b](Self.FWhazzup, AValue); end; 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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr. |
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 by Thomas Breitkreuz