Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Prism C# .net Code in Delphi .net? Funktionen Parse, Enum (https://www.delphipraxis.net/75246-c-net-code-delphi-net-funktionen-parse-enum.html)

ZeroQool007 16. Aug 2006 14:30


C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Hallo, irgendwie komme ich nicht dahinter wie man die Zeile in Delphi.net schreibt. Kann mir vllt. jemand bitte helfen? big thx

C# .net Code:
Delphi-Quellcode:
item.ListingType = (ListingTypeCodeType)Enum.Parse(typeof(ListingTypeCodeType), CboListType.SelectedItem.ToString());

MathiasSimmack 16. Aug 2006 15:35

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Wenn ich mir das im Reflector angucke, sollte das so aussehen:
Delphi-Quellcode:
item.ListingType := (Enum.Parse(typeof(ListingTypeCodeType),
  CboListType.SelectedItem.ToString) as ListingTypeCodeType);

ZeroQool007 21. Aug 2006 09:24

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Hallo, danke für den Tip, aber leider hat es nicht geklappt
Zitat:

es gibt keine überladene Version von PARSE


Delphi-Quellcode:
  ItemTypeInstanz.ListingType := (Enum.Parse(typeof(ListingTypeCodeType),
  frm_eBayAuktionsEingabe.CmB_ListingType.Items) as ListingTypeCodeType);

sakura 21. Aug 2006 09:31

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Also an folgendem konkreten Beispiel kompiliert es ohne Probleme:
Delphi-Quellcode:
var
  X: System.Windows.Forms.DialogResult;
begin
  X := (Enum.Parse(typeof(DialogResult), 'text') as System.Windows.Forms.DialogResult);
end;
was nicht geht
Delphi-Quellcode:
var
  X: System.Windows.Forms.DialogResult;
begin
  X := (Enum.Parse(typeof(DialogResult), 'text') as DialogResult);
end;
Versuche mal vollständige Qualifizierer (Namespace, etc.)

...:cat:...

Elvis 21. Aug 2006 09:35

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Hättest du es anstatt als Delphi.Net Code[1] als C# Code markiert, hätte ein Übersetzungslink C# -> D.Net auftauchen sollen.
Code:
item.ListingType = (ListingTypeCodeType)Enum.Parse(typeof(ListingTypeCodeType), CboListType.SelectedItem.ToString());
Dein Problem wird übrigens einfach nur sein, dass Enum ein Keyword im D.Net Compiler ist.
Das allererste, was man in so einem Fall in einem nicht case-senseitiven .Net Compiler macht ist es, vor das Wort ein & zu setzen. Das ist allgemeine .Net Konvention für Compilerbauer und bedeutet, dass man nicht dass Keyword sondern einen gleichnamigen Bezeichner meint.

In deinem Fall also System.Enum.

btw: Ich könnte dafür wetten, dass ich das schon einmal in einem deiner Thread erwähnt habe oder zumindest in einem den du hier zu D.Net gelesen hast...

[1]Warum zum Geier nimmt man Syntax highlighting von D.Net für C#? :gruebel:

Nachtrag:
Zitat:

Zitat von ZeroQool007
Delphi-Quellcode:
  ItemTypeInstanz.ListingType := (Enum.Parse(typeof(ListingTypeCodeType),
  frm_eBayAuktionsEingabe.CmB_ListingType.Items) as ListingTypeCodeType);

Du hättest auch ruhig den C# Code zu Delphi übersetzen können, anstatt etwas anderes da rein zuschreiben.
Dein D.Net (nachdem ich ihn mir doch angesehen habe...) Versucht den Inhalt der Collection Items in eine Instanz deines Enum typen zu konvertieren.
Die C' Version war wenigstens schlau genug um es mit dem ausgewählten Item zu machen...

sakura 21. Aug 2006 09:38

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Zitat:

Zitat von Elvis
Dein Problem wird übrigens einfach nur sein, dass Enum ein Keyword im D.Net Compiler ist.

Seit wann :shock:

...:cat:...

Elvis 21. Aug 2006 09:42

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Zitat:

Zitat von sakura
Zitat:

Zitat von Elvis
Dein Problem wird übrigens einfach nur sein, dass Enum ein Keyword im D.Net Compiler ist.

Seit wann :shock:

...:cat:...

Ich schrieb absichtlich unbestimmt, da ich einfach nicht wusste ob es so ist. Hätte ich mir den übersetzen Übersetzten D.Net Code gleich angesehen hätte ich gewusst, dass es nicht so ist.
In CHrome ist es ein Keyword und wäre es eins in D.Net gewesen wäre die Fehlermeldung die gleiche gewesen. :zwinker:
Denn in deinem Code Beispiel ässt sich "System.Windows.Forms.DialogResult" sicherlich auch durch &DialogResult ersetzen. Auch wenn es kein Keyword ist.

jbg 21. Aug 2006 11:39

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Zitat:

Zitat von Elvis
Denn in deinem Code Beispiel ässt sich "System.Windows.Forms.DialogResult" sicherlich auch durch &DialogResult ersetzen.

Nur, wenn es nicht in einem WinForms Formular benutzt wird. Denn diese haben eine Property DialogResult, die dem Datentyp System.Windows.Forms.DialogResult im Weg steht. Deswegen muss dieser vollständig qualifiziert werden. Sowas kommt davon, wenn man keine Prefixe für Typen mehr nehmen "darf", und dann auch noch haar genau eine Eigenschaft mit dem selben Namen deklariert (die ja nach C# Gewohnheit auch mit einem Großbuchstaben anfangen sollten). Das es in C# funktioniert liegt daran, dass der C# Compiler ein wenig mitdenkt und merkt, dass er hier nicht auf eine Eigenschaft zugreifen kann, aber es einen Enum-Typ gibt, der genau so lautet. Persönlich finde ich Delphi.NET's Verhalten hierbei aber besser, auch wenn mir eine Warnung statt des Kompilierfehlers lieber wäre.

Aber zum Glück geht es hier nicht um DialogResult, sondern um ListingTypeCodeType.

ZeroQool007 22. Aug 2006 09:25

Re: C# .net Code in Delphi .net? Funktionen Parse, Enum
 
Anscheinend klappt es so...thx


Delphi-Quellcode:
  ItemTypeInstanz.ListingType := (Enum.Parse(typeof(ebay.Service.Core.Soap.ListingTypeCodeType),
  frm_eBayAuktionsEingabe.CmB_ListingType.Items.ToString) as ebay.Service.Core.Soap.ListingTypeCodeType);


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