Laden...
Q
Quallo myCSharp.de - Member
Anwendungsentwickler Nähe Bremen Dabei seit 12.01.2005 992 Beiträge
Benutzerbeschreibung

Forenbeiträge von Quallo Ingesamt 992 Beiträge

14.07.2006 - 10:29 Uhr

Hallo!

Ich bin jetzt seit 1,5 Jahren Entwickler im Bereich .NET. Da ich außer .NET fast nichts tue, sehe ich mich, von einigen um-die-Ecke-Denkfehlern mal abgesehen, schon als sehr guten Entwickler an.

Da aber bald ein etwas größeres Projekt ansteht(kann durchaus 3 Jahre oder länger dauern), es handelt sich um eine Rich-Client-Anwendung mit Anbindung an ein Rechenzentrum, möchte ich gerne eine(oder mehrere) Schulungen für fortgeschrittene Entwickler besuchen, die mir das Thema Architektur näher bringen.
Damit meine ich ein Rundumpaket für große Desktopanwendungen: grobe Architektur, Kommunikation der Komponenten, Konfiguration, Lokalisierung, Logging, Datenzugriff, SOA, Kapselung, Plugins, Errorhandling, Schaffen einer Plattform um mit Unterprogrammen darauf aufzubauen usw.

Kennt ihr Anbieter für solche Schulungen, die auch wirklich Ahnung im Bereich .NET haben(ich will nicht lernen wie ich eine Klasse erstelle oder ein paar prozent mehr Performance rauskitzel)?

Wenn ja, bitte einfach URL und/oder Erfahrungen mit dem Anbieter posten.
Wenn es gute Bücher über das Thema gibt, die wirklich über die Grundlagen hinaus gehen, dann bin ich auch daran interessiert.

Grüße, Christoph

P.S.: Vielleicht miete ich auch einfach Herbivore für ein paar Tage an, dann haben alle hier was davon. 🤔
Wie sieht es aus herbivore, hättest du nicht mal Lust in den schönen Norden zu kommen? 😁

06.07.2006 - 13:59 Uhr

Es muss doch auch anders möglich sein, nach einer asynchronen Methode wieder in den ursprünglichen Thread zurückzukommen.

Das kann doch nicht unbedingt etwas mit GUI zu tun haben!

06.07.2006 - 13:48 Uhr

Wieso soll das nicht gehen? Ich habe nicht gesagt, dass ich Zugriff auf die GUI habe, sondern dass es in dem GUI-Thread läuft.
Ich erstelle meine Klasse nicht selbst, sie wird von der anderen Komponente erzeugt. Ein Plugin sozusagen.

06.07.2006 - 13:06 Uhr

@Da Schroeter: Ich habe aber keinen Zugriff auf das Formular(weder ich auf den Quellcode, noch mein Code auf eine Instanz), sondern nur auf eine Methode, die nicht threadsichere Aufrufe auf das Formular macht.
Deswegen muss ich nach dem Aufruf der Asynchronen Methode meiner Methode A bescheid sagen, dass sie Methode B ausführen soll, sobald sie Zeit hat. Ich brauche also ein Event in dem Gui-Thread, welches ich aus der asynchronen Methode aufrufen kann...

Ich habe allerdings schon ein Event in Klasse A definiert, welche Methode B aufruft. Dieses habe ich aus der asynchronen Methode mit Begin-Invoke gestartet und habe eine Fehlermeldung bekommen, dass der Zugriff auf die GUI nicht mit dem gleichen Thread stattfand.

06.07.2006 - 12:49 Uhr

@herbivore: Und das geht alles ohne Zugriff auf die Form und dessen Quellcode?

@DaSchroeter: Wenn ich das richtig sehe, wird der Code dann aber erst ausgeführt, wenn der GUI-Thread wieder Zeit hat und das kann dauern, auf jeden Fall länger als das TCP-Timeout.
Auf welches InvokeRequired und Invoke soll ich zugreifen, wenn ich keine Instanz der Form habe?

06.07.2006 - 12:36 Uhr

Ich befinde mich in meinem eigenen Code, Klasse A,(der läuft im GUI-Thread ab). Dort starte ich asynchron eine Methode(via TCPListener.BeginAcceptClient(...)).
Am Ende dieser asynchronen Methode muss ich eine Methode B aus Klasse A aufrufen. Diese Methode B greift(über Fremdkomponenten die nicht per Control.Invoke arbeiten) auf die GUI zu, das heisst, dass Methode B im GUI-Thread laufen muss.
Wie bekomme ich einen Aufruf von Methode B aus der asynchronen Methode heraus hin, so dass Methode B im GUI-Thread läuft?

Grüße, Christoph

06.07.2006 - 12:07 Uhr

Scherzkeks.

Ich lese nicht heraus, wie ich deine Antwort einsetzen sollte?
Wie kann ich in meinen GUI-Thread(ich meine wirklich nur den Thread, in dem die GUI läuft, keinen Zugriff auf GUI-Elemente) zurückkehren? Wie kann ich aus einem anderen Thread ein Event aufrufen, was dann in diesem Thread ausgeführt wird?

Grüße, Christoph

06.07.2006 - 11:56 Uhr

Ich kann leider kein Invoke einsetzen, da ich keinen Zugriff auf diesen Code habe.

Es ist eine Klasse, die die GUI und noch diverse andere Dinge kapselt(es handelt sich um Logging in der Gui, im Filesystem, etc...).
Diese Klasse läuft, so wie auch der Rest meines Codes, in dem GUI-Thread, kann also auch problemlos darauf zugreifen.
Allerdings starte ich eine asynchrone Methode und wenn diese fertig ist, muss ich irgendwie ein Event(oder generell einen Code-Block) starten, der in dem GUI-Thread läuft, von dem ich dann auf die Log-Klasse zugreife.
Ich suche also einen Mechanismus, um von dem asynchronen Handler in den GUI-Thread zurückzukommen.

06.07.2006 - 11:33 Uhr

Hallo!

Ich habe eine asynchrone Abarbeitung von TCP-Daten.

In der Abarbeitungsmethode, die asynchron in einem anderen Thread als die GUI läuft möchte ich eine Methode starten, die auf die GUI zugreift, bzw. genau genommen möchte ich den Hauptthread anweisen diese Methode zu starten, damit es keine Probleme beim Zugriff auf die GUI gibt.

Wie kann ich das umsetzen(Control.BeginInvoke kann ich nicht, da ich aus dem anderen Thread keine direkten Zugriffe auf die GUI habe, sondern nur Methoden starte, die dann auf die GUI zugreifen.)?

Grüße, Christoph

06.07.2006 - 11:18 Uhr

Folgendes Problem: TCPListener.Stop() ruft die in BeginAcceptTcpClient(...) angegebene Methode auf, auch wenn keine eingehende Verbindung vorliegt.
Wie kann ich dies unterbinden?
Kann ich den Aufruf auf BeginAcceptTcpClient irgendwie rückgängig machen?

Grüße, Christoph

05.07.2006 - 13:26 Uhr

Okay, habe mich da mal ein wenig eingelesen und getestet.

2 Fragen habe ich dazu: Wie sieht es mit Threading aus, so wie es mir scheint wird eine Remote-Anfrage immer in einem neuen Thread geöffnet. Kann ich von da aus problemlos auf den GuiThread zugreifen oder bekomme ich da Probleme(was kann ich tun, um diese Probleme zu umgehen?)?

Ich möchte einen Wert aus meiner jetzigen Anwendung nach aussen reichen. Muss ich dazu wirklich erst mal eine Klasse erstellen mit der GibMirWert-Methode und die in eine .dll kompilieren, die Client und Server kennen?
Ich möchte, da die Klasse ja auf dem Server erstellt wird und dort läuft, einen bestimmten Konstruktor übergeben, der einen delegate auf eine Funktion in der Anwendung hat. Wie mache ich das? Ich sehe momentan keinen Weg, da ich nicht weiß, wie ich ein Service mit einem parametrisierten Konstruktor erstelle.

Gibt es nicht einen einfacheren Weg(notfalls auch ohne Remoting) einfach ein int nach außen zu reichen?

05.07.2006 - 11:31 Uhr

Hallo Community,

ich habe folgendes Problem:

Ich habe einen Serverprozess, der echt wichtige Daten verarbeitet. Es muss sichergestellt sein, dass dieser Prozess jederzeit verfügbar ist(d.h. er muss nicht nur laufen, sondern auch aktiv auf eine Anfrage antworten, dass sein Status in Ordnung ist und die Verarbeitung läuft)!

Wir haben ein Überwachungsprogramm im Einsatz, welches zur Erweiterung die Möglichkeit bietet, ein Programm zu starten und den Returnwert auszuwerten. Dieser wird dann an die zentrale Infrastrukturüberwachung übertragen.
Ich möchte also ein Programm starten, was irgendwie eine Methode eines anderen Prozesses startet und einen Wert daraus zurückbekommt.
Beide Programme werden von mir entwickelt und sind komplett in .NET 2.0 gehalten.

Das weitere Problem ist natürlich, dass der Verarbeitungsprozess auch arbeitet und ich deswegen den Zeitpunkt der Antwort auf die Anfrage des anderen Prozesses manuell bestimmen möchte.

Welchen Weg schlagt ihr vor, wie sieht es beispielsweise mit Remoting aus?
Kann ich da eine Methode public definieren, so dass andere Prozesse über einen Port diese ansprechen können?

Grüße, Christoph

28.06.2006 - 20:18 Uhr

Mach für diese Frage am Besten einen neuen Thread auf, da es ein anderes Thema ist.
Nichts zu danken, basiert ja alles auf Gegenseitigkeit hier.

Grüße, Christoph

28.06.2006 - 20:11 Uhr

Original von Ayke
ist keine spyware und auch nix illegales sogar der sony kopierschutz installiert ein rootkit auf dein rechner und das mit der vm ist ein guter tip aber ich bin zu faul dafür

Soviel dazu: http://www.heise.de/newsticker/meldung/73417

27.06.2006 - 23:26 Uhr

Ich denke mal, wenn es um die Integration von Unternehmensdaten geht ist ASP.NET wesentlich besser geeignet ist(bessere, wesentlich produktivere SOAP und DB-Unterstützung, wesentlich größere Klassenbibliothek(Remoting, Filesystemzugriff, XML...)).
Das ist ja eigentlich auch nicht der Einsatzzweck von PHP und streng genommen auch nicht von ASP.NET, da aber das komplette Framework dabei ist, meistert es diese Aufgabe recht gut.
Davon abgesehen ist C# schneller, solange man nicht bestimmte vorkompilierte Varianten von PHP einsetzt, sicherer(auch im Sinne von stabiler) durch Typsicherheit und besonders weil du die Sprache beherrscht.
Und jetzt mal ehrlich, was sind 200 Euro Lizenzkosten, bei der Wahl einer Sprache/eines Frameworks, wenn man sich erst mal in eine Sprache einarbeiten muss, die ohnehin schon nicht so produktiv ist wie die andere. Gerade wenn es darum geht einen Webshop an ein Unternehmen anzupassen.

Grüße, Christoph

27.06.2006 - 23:15 Uhr

Du musst es entweder so ändern:

new System.Data.SqlClient.SqlConnection(@"Data Source=.

.....
oder so:

new System.Data.SqlClient.SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\TimeBase.mdf;Integrated Security=True;User Instance=True");

Such hier mal ein wenig nach Escapesequences oder Escapesequenzen...

Grüße Christoph

23.06.2006 - 08:54 Uhr

Caché kann Proxy-Klassen seiner Objekte/Tabellen für .NET generieren. Inklusive Methoden! Die werden dann bei einem Aufruf vom Server ausgeführt.
Ein sehr geiles Konzept wie ich finde. Sauschnell und komfortabel sowie mit relativer Fehlersichherheit aufzurufen.

22.06.2006 - 14:18 Uhr

@Robert G.: Kannst du mal ein wenig mehr von deinen Erfahrungen mit Caché berichten? Ich suche verzweifelt nach Anwendern, die Erfahrungen damit, gerade im Bereich .NET, gemacht haben.

Grüße, Christoph

20.06.2006 - 23:25 Uhr

Genau richtig!

Sorry, war noch im Siegestaumel g

20.06.2006 - 19:04 Uhr

Auf 0 testen hat er vor, nicht auf null!

Eine recht einfache Sache ist auch:


if(obj.ToString() == 0) return true;
return false;

20.06.2006 - 14:58 Uhr

Ok, das sollte auf jeden Fall funktionieren!

Vielen Dank(mal wieder) Herbivore

20.06.2006 - 14:08 Uhr

Nachteile sind m.E. Versionierung und Massenoperation bzw. Massenauswertungen.
Auch Reports sind schwierig. Und man bindet sich meist eine OODB ziemlich ans Bein, während man mit SQL noch halbwegs flexibel ist.

20.06.2006 - 13:54 Uhr

Bin dabei, nähe Bremen...

20.06.2006 - 13:45 Uhr

Geht mir genauso.

Aber schön die Bestätigung zu haben, dass es dir/euch auch so geht.

20.06.2006 - 13:37 Uhr

Ja, es ist ein beliebiges Objekt, keinerlei Einschränkungen.
Es kann allerdings eine Zahl sein(decimal, int...).

20.06.2006 - 13:32 Uhr

Ich brauche eine Funktion, die folgendes liefert:


public bool IsZero(object obj) // hier kann man ein beliebiges Object reinpacken. Wenn es numerisch ist UND 0 als Wert hat, wird true zurückgegeben, sonst false
{
    ...
}

Wegen Performance(wird häufig durchgeführt) möglichst ohne Reflection und bewusstem Abfangen von Exceptions wegen falscher Casts.
Implementieren Zahlen vielleicht ein Interface welches man dafür nehmen kann?

Grüße, Christoph

16.06.2006 - 09:32 Uhr

Ich würde es schön finden, wenn man ein Forum speziell zu .NET 3.0 bzw. WinFX aufmacht.
Da das Ganze eine Riesenmenge neuer Bibliotheken und Konzepte mitbringt, mit denen man sich rechtzeitig beschäftigen sollte/möchte, wäre es sicher nicht verkehrt ein Forum zu schaffen, wo man speziell zu diesem Thema Erfahrungen, Tutorials, Einführungen und praktische Hilfe bietet. Besonders der Einstieg in eine neue Thematik ist oft schwer und man steht manchmal einfach vor einem Berg...

Außerdem war mycsharp.de in Sachen .NET ja schon immer ein Vorreiter und kann auch für .NET 3.0 frühzeitig eine Anlaufstelle für Entwickler werden.

Grüße, Christoph

02.06.2006 - 14:40 Uhr

Alles gute zum 20000. Thread!

Wenn man nach der Threadid in der URL geht haben wir die nämlich jetzt voll!

Weiter so!!!

01.06.2006 - 17:58 Uhr

Danke für den Code, da der FormatString aber in ein Attribut eines Property gehört kann ich ihn nicht dynamisch erstellen!

01.06.2006 - 12:41 Uhr

Das wäre ein einfacher Workaround.
Nur leider im Zusammenhang mit der Bibliothek nicht ohne weiteres zu erledigen.
Die akzeptiert nur FormatStrings.

Aber wenn es keinen Weg gibt muss ich schauen, wie ich das da reinfrickeln kann!

Danke, Christoph

01.06.2006 - 11:06 Uhr

Hallo allerseits!

Ich formatiere eine Zahl(decimal) mit String.Format(string, object).
Diese Zahl ist -4.
Herauskommen muss folgender String 00000000000-4.
Ich kann es nur über diesen Formatsting steuern(bedingt durch die Bibliothek).

Im Moment benutze ich folgenden Formatstring: "{0:0000000000000}"

Gibt es eine Möglichkeit das Minus direkt vor der Zahl zu platzieren?

Ach ja, bevor ich schläge kriege: Das Datenformat habe ich nicht designed!

31.05.2006 - 12:44 Uhr

Hilfsfile solltest du dir sparen und direkt von einer in die andere ArrayList kopieren.

Und wenn man so ein File schreibt dann auf jeden Fall mit einem StringBuilder und nicht mit += oder + auf einen String zusammenstringen! Das ist um Faktoren schneller!

31.05.2006 - 11:37 Uhr

Ich habe gerade gemerkt, dass die StringBuilder.AppendFormat genau das bereithält was ich benötige.

Werde aber mal schauen, ob es wirklich so ist!

EDIT: String.Format scheint übrigens das gleiche zu machen!

31.05.2006 - 00:18 Uhr

Original von Matrix-NTN
Mir ist da gerade noch was eingefallen...
was ist, wenn jemand den 10er wegschießt? Dann kann ich nichts mehr auswerten.
grml grml
*denk denk*
Mir ist da gerade so eine kleine Idee gekommen,
Was ist, wenn ich einfach vom Kartenrand nach innen gehe, biss etwas schwarzes kommt... Das kann ich ja dann eigentlich von irgendwo machen, d.h. es ist unempfindlich gegen Schüße (wie oben 10er wegschießen).
Das müsste ich dann von mehreren Stellen aus machen und dann kann ich mir den ersten kreis zusammenbasteln (rechnen). So wenn ich den habe, dann kann ich mir die restlichen Kreise ebenfalls ausrechnen. So nun ist nur noch die Frage, wie ich dann erkenne, wo der Schuss ist. Hmm das müsste ich mir mal genau anschauen, bzw. müsste mal ein Bild davon machen.
Was haltet ihr von dieser Idee?

Ist doch fast das was ich gesagt habe! g

31.05.2006 - 00:13 Uhr

Wie du einen Schuss erkennst, der genau auf einer Linie liegt(und nur hoch/tief variiert) ist dir sicher klar geworden.
Nun muss die Linie ja nicht direkt von oben nach unten gehen, sondern kann auch von links nach rechts(270 nach 90 grad) gehen.
Oder sie kann von halb 2(45 grad) bis halb 8(225 grad) gehen.
Man kann die Linie also um einen gedachten Kreis um die Scheibe kreisen lassen und dort immer wieder den gleichen Test machen wie bei dem eindimensionalen Beispiel.
Ich bin der Meinung, dass jeder Schuss(egal wo) immer auf einer Linie liegt, die durch den Mittelpunkt geht. Wenn du weisst wo die Mitte ist(das lässt sich ja noch recht leicht feststellen in dem man von allen Seiten nachschaut, wo der erste Ring beginnt und davon die Mitte wählt) musst du nur die Linie von allen Rundrum suchen, auf der die Längste Zeit die falsche Farbe kommt(das ist der Schuss). Diese Linie geht durch den Mittelpunkt der Scheibe und des Schusses. So ein wenig Pytagoras und das klappt mit der Entfernung der Kreise, also dem Teiler.
Vielleicht nimmst du auch eine Bibliotheksfunktion um das Bild zu drehen, dann kannst du dir die Linie immer ganz einfach gerade denken.

30.05.2006 - 16:38 Uhr

Genau das hatte ich mir auch schon als Workaround überlegt. Ist leider ein wenig Gefrickel, aber muss wohl gehen...
Wieder was für C# 3.0 gefunden!

Nochmals vielen herzlichen Dank!!!

Grüße, Christoph

30.05.2006 - 16:02 Uhr

So ähnlich habe ich mir das gedacht!

über eine Property der Attribut-Klasse, die die IFormatProvider-Instanz liefert.

Meine Frage wäre jetzt noch, wie ich eine Instanz des Attributes erstelle(nicht codeseitig, sondern in eckigen Klammern über einem Property.

Folgendes:

//Das Attribut:
    [System.AttributeUsage(System.AttributeTargets.Property)]
    public class CSVWriterPropertyAttribute : Attribute
    {

        private IFormatProvider formatProvider;

        public IFormatProvider FormatProvider
        {
            get { return formatProvider; }
            set { formatProvider = value; }
        }
        

        private bool ignore = false;
        public bool Ignore
        {
            get { return ignore; }
            set { ignore = value; }
        }

        private string columnName;

        public string ColumnName
        {
            get { return columnName; }
            set { columnName = value; }
        }

    }


//Die Benutzung:
[CSVWriterProperty(ColumnName="Zahl",Ignore = false, FormatProvider = new NumericFormatter("C"))]


Gibt folgenden Fehler beim kompilieren:
"FormatProvider" ist kein gültiges benanntes Attributargument, da es sich nicht um einen gültigen Attributparametertyp handelt.

30.05.2006 - 15:21 Uhr

Ich hatte überlegt, die Convert.ToString(object, IFormatProvider) zu nehmen.
Dann muss jedes Property Y ein Attribut haben, welches einen IFormatProvider beinhaltet. Nur wie kann ich die IFormatProviderInstanz so eines Attributes instanzieren(Mit benannten Parametern geht es m.E. nicht)?

30.05.2006 - 15:04 Uhr

Ich habe noch eine weitere Frage:

Ich weiß nicht, von welchem Typ Y ist. Trotzdem möchte ich es formatieren, wenn es eine Zahl ist.
Wie mache ich das?

Ich habe einen FormatString FS und ein Object Z , bei dem ich nicht weiß, von welchem Typ es ist...

30.05.2006 - 14:47 Uhr

Danke. Bin ich schon drauf gestoßen, dachte nur, dass es vielleicht eine einfachere Methode gibt. Hat mich ein wenig irritiert, dass die nicht überladen ist sondern einen Parameter hat, der optional null ist. Ist recht selten im Framework.

Grüße, Christoph

30.05.2006 - 14:10 Uhr

Folgendes:
Ich habe eine Instanz der Klasse Test, namens X.
Die Klasse Test hat eine Property mit dem Namen Y, diese ist mit einem Wert gefüllt. Ich will den Wert der Property in die Variable Z haben.

Normal sähe das so aus:


Test X = new Test();
Z = X.Y;

Wir komme ich, via Reflection, an den Wert von Z?

Grüße, Christoph

29.05.2006 - 23:59 Uhr

Ich würde mir da auch etwas anderes vorstellen können.

Nehmen wir mal an, dass der Schuss nur bei hoch und Tief variiert.

Wir gehen also in der Mitte der Scheibe an Hand einer gedachten Linie von oben nach unten und schauen, wo schwarze Pixel sind, das sind die Ringe und irgendwo ist der Schuss.
Die Ringe sind natürlich weniger Pixel breit, als der Schuss.
So kannst du, auf einer Linie, also 1-Dimensional, schauen, wo der Schuss ist und die Mitte an Hand der Ringe und der gespeicherten Größe und vermuteten Position feststellen.

Um die Sache jetzt auf 2 Dimensionen zu übertragen kannst du die gedachte Linie um den äußeren Ring kreisen lassen und die Prüfung von verschiedenen Punkten starten.

Wenn du initial feststellst wo die Mitte ist, kannst du da vielleicht noch einen Kreis mit XOR rübermalen, so dass es einheitlich Schwarz und weiß ist(Scheibe weiß und Schüsse schwarz).

Du könntest auch, um es einfacher zu machen, die Scheibe recht fix einspannen, eine kleine Korrektur an Hand der äußeren Ringe machen(Von x Richtungen prüfen, wo der Ring beginnt) und als Hintergrund beim Scannen eine Farbe wie Rosa nehmen, so dass der Schuss Rosa wird. Dann weißt du genau wo die Scheibe ist und wo der Schuss ist.

Grüße, Christoph

19.05.2006 - 23:56 Uhr

Hat jemand eine Ahnung, wie ich in MySQL Stored Procedures einen Fehler schmeißen kann, der dann an den Client weitergegeben wird?

15.05.2006 - 17:45 Uhr

Ich muss ein Projekt mit Java(JSP(dynamische Webseiten generiert durch Java), Webservices mit Tomcat, Java als Webservice-Client, evtl. .Net als Webservice-Client(später...)) durchziehen.

Könnt ihr mir ein gutes Forum sagen, wo ich Hilfe finde?

Grüße, Christoph

11.05.2006 - 12:28 Uhr

Der Fall würde mich auch interessieren.

09.05.2006 - 10:32 Uhr

Hallo Leute, ich suche Theorie über das Zusammenführen von geänderten Listen(implementieren muss ich das in PL/SQL)!

Jeder Eintrag in der Liste hat eine eindeutige ID, ist also eindeutig gekennzeichnet.

Ich habe eine Liste A mit einigen Einträgen.
Ich kopiere nun Liste A und füge ein paar Einträge an beliebiger Stelle hinzu, lösche ein paar Einträge speichere das als Liste B.
Dann kopiere ich Liste A, ändere(beliebig hinzufügen, beliebig löschen, beliebig umsortieren) und speichere das als Liste C.
Jetzt brauche ich eine Funktion, die mir aus der Differenz von A und B sowie aus der Differenz von A und C eine Liste D erstellt.
Folgende Bedingungen müssen erfüllt sein:

  • Von A nach B und/oder von A nach C gelöschte Einträge dürfen in D nicht enthalten sein.
  • Von A nach B hinzugefügte und/oder von A nach C hinzugefügte Einträge müssen in D enthalten sein.
  • Die Reihenfolge der Einträge sollte "relativ" genau der in Liste C entsprechen, es sollen die Einträge die in B neu sind oder nicht mehr vorhanden sind möglichst geschickt hinzugefügt bzw. entfernt werden

Gibt es da Lösungsansätze zu?
Ist keine Schulaufgabe sondern harte Entwicklerrealität g!

Grüße, Christoph

03.05.2006 - 21:14 Uhr

Wenn man den Code der Exceptions werfen kann wieder abfängt, ist es auch im finally kein Problem!

03.05.2006 - 16:00 Uhr

Original von talla
Sollte man meiner Meinung nach vermeiden. Die Wartbarkeit und Codeverständnis leidet schon aufn ersten Blick. Technische Gründe fallen mir aber nicht unbedingt ein.

Alles klar, auf die Diskussion wollte ich hinaus. Der Rest sollte mehr als Grundlage dafür dienen. Durch mein return im finallyblock ist mein Beispiel aber gründlich nach hinten losgegangen.

03.05.2006 - 15:56 Uhr

Schau dir mal das foreach Statement an, das sollte es einfacher machen.

Damit solltest du dann über NameList iterieren. Des weiteren musst du sicher sein, dass NameList nicht mehr als 4 Elemente hat.

Grüße, Christoph

03.05.2006 - 15:49 Uhr

@frisch: Die Frage war nicht, ob ein return im finallyblock aufgerufen wird. Die Antwort und dein Test sind trotzdem sehr interessant, danke dafür.

Nehmen wir mal das Beispiel von Robert G. und mir zusammen


public static int returnint()
{
  try
  {
    return 5;
  }
  finally
  {
    DoSomethingElse();
  }
} 

Es wird m.E. die Funktion DoSomeThingElse aufgerufen und 5 an den Aufrufer der Funktion zurückgegeben.
Ist das so in Ordnung? Oder sollte man das vermeiden?