Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Java -> C# (https://www.delphipraxis.net/79226-java-c.html)

Luckie 18. Okt 2006 15:09


Java -> C#
 
Ich muss hier Java Code nach C# portieren. Größtenteils läßt sich das mit Copy and paste machen. Doch ein zwei Problem habe ich.
Code:
            Transaction tx = null;
            Session session = InitSessionFactory.getInstance().getCurrentSession();
            try
            {
                tx = session.beginTransaction();
                List honeys = session.createQuery("select h from Honey as h").list(); // erster Fehler: List
                for (Iterator iter = honeys.iterator(); iter.hasNext(); ) // zweiter Fehler Iterator
                {
                    Honey element = (Honey)iter.next();
                    // TODO: Ausgabe
                }
                tx.commit();
            }
Zitat:

Die Verwendung von Typ "System.Collections.Generic.List<T>" (generisch) macht das 1-Typargument erforderlich.
und der Typ Iterator ist nicht bekannt.
Wobei erwähnt werden sollte, dass der Typ Session aus einer .NET Assembly stammt die mit ikvmc aus Java Bytecode generiert wurde.

Code:
List<Honey> honeys = ..
hilft auch nicht. dann kommt die fehlermeldung:
Zitat:

Der Typ "java.util.List" kann nicht implizit in "System.Collections.Generic.List<de.laliluna.examp le.Honey>" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)
Ja, und wie mache ich das mit dem Iterator?

Dax 18. Okt 2006 15:28

Re: Java -> C#
 
Statt .iterator .GetEnumerator() verwenden, oder am besten gleich foreach ;)

Luckie 18. Okt 2006 15:38

Re: Java -> C#
 
Ich bin in C# noch nicht so fit. Wie würde das mit foreach aussehen? Danke schon mal.

Dax 18. Okt 2006 15:50

Re: Java -> C#
 
foreach ist for recht ähnlich..

Code:
foreach(ElementClass element in list) {
  // code
}
Dementsprechend müsste dein Code in der foreach-Form ungefähr so aussehen:
Code:
foreach(Honey honey in honeys) {
  // TODO: Ausgabe
}

Luckie 19. Okt 2006 10:06

Re: Java -> C#
 
Ja gut, das scheint zu funktionieren. ;)

Gibt es noch eine Lösung zu dem Problem mit der Liste?

MathiasSimmack 19. Okt 2006 10:16

Re: Java -> C#
 
Es sind wohl zwei verschiedene List-Typen. Versuch doch mal aus
Code:
List honeys = session.createQuery("select h from Honey as h").list(); // erster Fehler: List
ein
Code:
java.util.List honeys = ...
zu machen.

Luckie 19. Okt 2006 10:31

Re: Java -> C#
 
Gute Idee. Das funktioniert. Jetzt kann ich nur wieder kein foreach nehmen:
Zitat:

Eine foreach-Anweisung kann nicht für Variablen vom Typ "java.util.List" verwendet werden, da "java.util.List" keine öffentliche Definition für "GetEnumerator" enthält.
Jetzt müsste ich das wohl wieder über den Iterator lösen. :?

Khabarakh 19. Okt 2006 10:45

Re: Java -> C#
 
Dort muss es wahrscheinlich auch wieder java.util.Iterator heißen.

Luckie 19. Okt 2006 10:49

Re: Java -> C#
 
Hach, ihr seid spitze. :thumb:


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