Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C# Delphi Property nach C# übertragen (https://www.delphipraxis.net/103656-delphi-property-nach-c-uebertragen.html)

Luckie 19. Nov 2007 10:47


Delphi Property nach C# übertragen
 
Wie realisiert man folgerndes Konstrukt in C#:
Delphi-Quellcode:
property Items[Index: Integer]: TCard read GetItem write SetItem;
Delphi-Quellcode:
function TMemoryField.GetItem(Index: Integer): TCard;
begin
  Result := FCards.Items[Index];
end;

procedure TMemoryField.SetItem(Index: Integer; const Value: TCard);
begin
  FCards.Items[Index] := Value;
end;
Ich probiere es gerade so:
Code:
        public Person Item(int Index, Person person)
        {
            get
            {
                return innerList[Index];
            }
            set
            {
                innerList[Index] = person;
            }
        }
Aber da will er nach get und set eine Semikolon haben. :gruebel:

Phoenix 19. Nov 2007 10:52

Re: Delphi Property nach C# übertragen
 
Code:
public Person Item[int index]
        {
            get
            {
                return innerList[Index];
            }
            set
            {
                innerList[Index] = person;
            }
        }

Luckie 19. Nov 2007 11:00

Re: Delphi Property nach C# übertragen
 
Äh, nein. Das bringt 13 Fehler.

Code:
        public Person Item[int index]
        {
            get
            {
                return innerList[index];
            }
            set
            {
                innerList[Index] = person;
            }
        }
Zeile 1 (eckige Klammer): Error 1 Bad array declarator: To declare a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type. C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 110 27 Container_Klasse

Zeile 1 (int): Error 2 Array size cannot be specified in a variable declaration (try initializing with a 'new' expression) C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 110 28 Container_Klasse

Zeile 1 (index): Error 3 Invalid expression term 'int' C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 110 32 Container_Klasse

Zeile 4: Error 5 Invalid token '{' in class, struct, or interface member declaration C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 113 13 Container_Klasse

Zeile 5: Error 6 Invalid token '[' in class, struct, or interface member declaration C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 114 33 Container_Klasse

Zeile 5 (;): Error 7 Type expected C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 114 40 Container_Klasse

Zeile 5 (;): Error 8 Invalid token ';' in class, struct, or interface member declaration C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 114 40 Container_Klasse

Zeile 9 (=): Error 10 Expected class, delegate, enum, interface, or struct C:\Dokumente und Einstellungen\mp\Eigene Dateien\Visual Studio 2008\Projects\Container_Klasse\Container_Klasse\Pe rson.cs 118 34 Container_Klasse


usw.

Alter Mann 19. Nov 2007 11:12

Re: Delphi Property nach C# übertragen
 
Hi,

vielleicht so:
Code:

class Person : CollectionBase
{
...
 public Person this(int index)
 {
   get { return((Person)List[index]); }
   set { List[index] = value; }
 }
...
}
siehe auch: Galileo Computing

Gruß

Luckie 19. Nov 2007 11:13

Re: Delphi Property nach C# übertragen
 
Nein, nein. So sieht es bisher bei mir aus:
Code:
class PersonenListe
    {
        private List<Person> innerList;

        public PersonenListe()
        {
            innerList = new List<Person>();
        }

        public void Add(Person person)
        {
            innerList.Add(person);
        }

        public int Count
        {
            get
            {
                return innerList.Count;
            }
        }

        public Person Item(int index)
        {
            get
            {
                return innerList[index];
            }
            set
            {
                innerList[index] = person;
            }
        }
    }
Mit den runden Klammer bei public Person Item(int index) will er wieder die Semikola hiter get und set haben.

Phoenix 19. Nov 2007 11:20

Re: Delphi Property nach C# übertragen
 
Zitat:

Zitat von Luckie
Äh, nein. Das bringt 13 Fehler.

Probier mal
Code:
    public Person this[int index]
    {
        get
        {
            return ((Person)innerList[index]);
        }
        set
        {
            innerList[index] = value;
        }
    }

Alter Mann 19. Nov 2007 11:34

Re: Delphi Property nach C# übertragen
 
Mag sein, lese oder überfliege den Artikel und den darauf folgenden.
Dort wird alles zum Thema erklärt.

Gruß

Luckie 19. Nov 2007 11:53

Re: Delphi Property nach C# übertragen
 
@Phoenix: Jupp, so geht es.

@AlterMann: Ich wollte es ohne der besagten Klasse aus dem Artikel machen. Das wäre jetzt ein weitere Ansatz, den ich mir mal angucken kann.


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