![]() |
Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Hallo liebe Leute,
Ich habe heute in der Schule 'ne Aufgabe zu Datenbanken bekommen. Die Aufgaben werden Anhand von Beispielen durchprogrammiert. In einem dieser Beispiele hab ich diesen Codefetzen gefunden und wunder mich über die Syntax:
Delphi-Quellcode:
- was haben die "[]" bei einer Instanz zu suchen?
Table2['Datum'] := Date;
- wie funktionieren sie? - wie kann ich soetwas selber programmieren (hab mir die Klasse genauer angesehen, aber nichts gefunden bzw. ich bin nicht alle Mutterklassen durchgegangen) Bai de wey - ich habe mich schon um die Suche bemüht, jedoch nichts brauchbares gefunden. Bedanke mich schonmal im voraus MfG, Euer Aphi ^^ |
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Da isses besser aufgehoben. |
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Dies ist dann mögich enn die Klassen ein Array-Property als Default-Wert hat. Dann kann diese abgekürzte Schreibweise verwendet werden. Ist auch bei TStrings der Fall da hier das Items-Property default ist.
Delphi-Quellcode:
myStrings.Itemes[i] = myStrings[i];
|
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Hallo, dass ist ein sogenanntes Index-Property.
Delphi-Quellcode:
Ein anderes Beispiel findest Du hier:
Property Wrdlbrmpft[Index: String] : Type read getWrdlbrmpft write setWrdlbrmpft;
function TMyTYpe.getWrdlbrmpft(Index: String): Type; begin // hole item mit Namen in 'Index' und gebe es zurück end; procedure TMyType.setWrdlbrmpft(Index: String, Value: Type); begin // schreibe wert in Value in Item mit Namen in 'Index'; end ![]() |
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Hi,
Delphi-Quellcode:
// Imaginäres Beispiel
TBeispiel = class private FFields: TFieldList; procedure SetField(Index: String, const Value: TField); function GetField(Index: String): TField; public property Fields[Index: String]: TField read GetField write SetField; default; end; implementation procedure TBeispiel.SetField(Index: String, const Value: TField); begin FFields.GetFieldByName(Index) := Value; end; function TBeispiel.GetField(Index: String): TField; begin Result := FFields.GetFieldByName(Index); end;
Delphi-Quellcode:
var test: TBeispiel;
begin test.Fields['Hallo'] := blubb; // Abkürzende schreibweise für die Zeile // obendrüber: test['Hallo'] := blubb; // Kann man so schreiben wegen dem "default" keyword von der Fields Property end; |
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Verstehe...
Nun stellt sich mir die Frage, was passiert, wenn ich nun zwei Property Felder mit gleichem Index-Typ habe? Wird dann willkürlich eine Property ausgewählt, bzw. funktioniert das dann noch? Edit: Ich probiers mal aus :P MfG |
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Nein, denn man kann ja immer nur eine Property als Default markieren.
|
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Du kannst ja nur eine davon als Standard definieren (bzw. es wird nur eine akzeptiert). Die andere kann aber immer noch über die lange Schreibweise angesprochen werden.
|
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Zitat:
Vielen dank :dp: MfG |
Re: Delphi Syntax - Eckige Klammern bei Klasseninstanzen
Man kann auch 2 Array-Property als Default festlegen,
wenn diese via Overload markiert sind. Dann wird es, wie bei Prozeduren/Funktionen, anhand der Parameter entschieden. Aber sowas ist erst seit D2007 oder D2009 nutzbar. PS: das DEFAULT bei Array-Propertyies ist nicht zu verwechseln mit dem DEFAULT der "normalen" ordinalen Property! Wird in himXML erfolgreich so genutzt :angel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 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-2025 by Thomas Breitkreuz