Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zweidimensionales Array als Property (https://www.delphipraxis.net/114948-zweidimensionales-array-als-property.html)

Viktorii 3. Jun 2008 11:05


Zweidimensionales Array als Property
 
Hallo,
ich möchte gerne die Werte eines zweidimensionalen Arrays über ein Property setzen und lesen. So habe ich es versucht:

Delphi-Quellcode:
...
...

  private
    function GetaPipeHandles(iIndex, jIndex: Integer): USB_PIPE_HANDLE;
    procedure SetaPipeHandles(iIndex, jIndex: Integer; const Value: USB_PIPE_HANDLE);
  public
    property aPipeHandles[iIndex: Integer; jIndex :Integer] : USB_PIPE_HANDLE   read GetaPipeHandles  write SetaPipeHandles;

...
...

function TNotifyUSB.GetaPipeHandles(iIndex, jIndex: Integer): USB_PIPE_HANDLE;
begin
  Result := aPipeHandles[iIndex][jIndex];              // Fehler hier
end;


procedure TNotifyUSB.SetaPipeHandles(iIndex, jIndex: Integer;
  const Value: USB_PIPE_HANDLE);
begin
  aPipeHandles[iIndex][jIndex] := Value;               // und Fehler hier
end;

Es treten beim Compilieren zwei Fehler auf

Zitat:

[Pascal Fehler] USB_NotifyUSB.pas(124): E2035 Nicht genügend wirkliche Parameter
[Pascal Fehler] USB_NotifyUSB.pas(147): E2035 Nicht genügend wirkliche Parameter
Wie mache ich es richtig? Leider habe ich zu zweidimensionalen Arrays und propertys nichts finden können :?

Vielen Dank

Ghostwalker 3. Jun 2008 11:11

Re: Zweidimensionales Array als Property
 
Delphi-Quellcode:
function TNotifyUSB.GetaPipeHandles(iIndex, jIndex: Integer): USB_PIPE_HANDLE;
begin
  Result := aPipeHandles[iIndex,jIndex];              //so past dat :)
end;


procedure TNotifyUSB.SetaPipeHandles(iIndex, jIndex: Integer;
  const Value: USB_PIPE_HANDLE);
begin
  aPipeHandles[iIndex,jIndex] := Value;               //so past dat :)
end;
Bei mehrdimensonalen Array's werden die einzelnen indezes einfach per Komma getrennt :)

jbg 3. Jun 2008 11:39

Re: Zweidimensionales Array als Property
 
Zitat:

Zitat von Ghostwalker
Bei mehrdimensonalen Array's werden die einzelnen indezes einfach per Komma getrennt :)

Das ist so nicht richtig. Bei mehrdimensionalen property Arrays werden die einzelnen Indizes einfach per Komma getrennt. Bei normalen mehrdimensionalen Arrays kann man sich die Schreibweise aussuchen.


EDIT: Man, wie viele Rechtschreibfehler hast du denn da eingebaut. Und ich mit meinem Copy&Paste hab die nun auch drinnen gehabt.

EWeiss 3. Jun 2008 11:53

Re: Zweidimensionales Array als Property
 
Zitat:

Man, wie viele Rechtschreibfehler hast du denn da eingebaut. Und ich mit meinem Copy&Paste hab die nun auch drinnen gehabt.
Er steht zumindest dazu und editiert sie nicht ;)
Denke mal er wurde auch so verstanden.

Sorry Offtopic

gruss Emil

jottkaerr 3. Jun 2008 12:12

Re: Zweidimensionales Array als Property
 
Sowohl die ursprüngliche, fehlerhafte als auch die korrigierte Version führen zu Stack-Überläufen, da sie Rekursionen ohne Abbruchbedingungen sind. In Getter und Setter solltest Du nicht erneut auf das Property zugreifen, sondern z.B. auf das zugrundeliegende Feld FaPipeHandles.

jkr

Ghostwalker 3. Jun 2008 13:44

Re: Zweidimensionales Array als Property
 
@JPG

Rechtsschreibfehler hab ich keine, tippe immer beiden Händen :mrgreen:

@jott

Da hast du natürlich recht.


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