Knacknuss

Hallo Leute,

ich muss ein relative grosses Programm erweitern und einige Funktionen dazufügen. Das Problem ist, es handelt sich um ein Programm welches zu Zeiten von Visual Studio 2003 geschrieben wurde. Der Aufwand dies auf die neue Version zu portieren wäre zu gross und so wurde ich dazu gezwungen (hört sich härter an als es ist) es in Visual Studio 2003 umzusetzen. Soweit so gut.

Visual Studio unterstützt ja keine generischen Listen.. und genau hier hält sich das Problem versteckt. Ich habe mehrere Objektarray welche ich mit Daten fülle, einer ArrayListe hinzufüge und zu gegebener Zeit weiterverarbeiten muss. Anbei ein Codeausschnitt, um dies zu verdeutlichen.

Code:
ArrayList list = new ArrayList();
object[] feedSlot = new object[5];
feedSlot[0] = "1";
feedSlot[1] = "2";
feedSlot[2] = "3";
feedSlot[3] = "4";
feedSlot[4] = "5";

Dies verläuft soweit alles Paletti. Der Wurm steckt aber in der Weiterverarbeitung.
Ob ich nun ein objektarray oder ein einfaches objekt erstelle, in beiden Fällen kann ich dies mit dem Objekt aus der Liste füllen,
Code:
            object hallo = list[0];
            object[] hallo1 = new object[1];

ABER ich kann nicht darauf zugreifen, egal wie ich es auch versuche.

Ich bin schon nahe der Auffassung eine andere Lösung in Betracht zu ziehen und das bereits implementierte zu verwerfen und umzuschreiben. Aber irgendwie muss doch das gehen.

Ich weiss mit ner generischen Liste funktionierts wunderbar, nur habe ich die leider nicht als Option.

Grüsse aus Zürich
 
Hi

Also irgendwie hab ich dein Problem nicht verstanden. Bitte beschreib es nochmal und reis den Code nicht auseinander, der relevant ist. Entweder hab ich was übersehen oder es fehlen irgendwie die Zusammenhänge :confused:

Der Aufwand dies auf die neue Version zu portieren wäre zu gross
An welcher Stelle entsteht der Aufwand?
Solution mit VS 2005/2008 öffnen und VS konvertiert das Projekt. Kompilieren --> Features von .NET 2.0 oder höher nutzen.
 
An welcher Stelle entsteht der Aufwand?
Solution mit VS 2005/2008 öffnen und VS konvertiert das Projekt. Kompilieren --> Features von .NET 2.0 oder höher nutzen.

Wir arbeiten zurzeit immer noch mit Visual Studio 2005 und das besagte Projekt wurde mit der Version 2003 erstellt. Es handelt sich um viele Threadübergreifende Vorgänge auf die Hauptform. Naja ist wohl nicht die beste Herangehensweise dies nicht zu fixen, aber ja.

Code:
                      ArrayList list = new ArrayList();
            object[] feedSlot = new object[5];
            feedSlot[0] = "1";
            feedSlot[1] = "2";
            feedSlot[2] = "3";
            feedSlot[3] = "4";
            feedSlot[4] = "5";
            // Hinzufügen des Objektes zur Liste
            list.Add(feedSlot);

            // Variante 1
            object hallo = list[0];
            object[] hallo1 = new object[1];
            // Variante 2
            hallo1[0] = list[0];
            // Diese Operationen hier schlagen fehl
            string test1 = hallo[0];
            string test2 = hallo[0][0];

Dies ist nur ein kleines Testprogramm um es zu verdeutlichen. Ich kreire ein Arrayobjekt und lege dies in eine Arrayliste.

Wenn ich aber das besagte Objekt hinausnehmen will, erkennt er anscheinend nur den Datentyp object und das ist meiner Meinung nach das Problem. Ich sehe im Debugger zwar dass alle Informationen des Arrayobjektes noch da sind, ich komme aber an die Daten nicht ran. Jedenfalls nicht mit den 2 fehlgeschlagenen Operationen (Quellcode oben)

In beiden Fällen spuckt er mir
Code:
Fehler	3	Indizierung mit [] kann nicht auf einen Ausdruck vom Typ "object" angewendet werden.	C:\SOFTWARE_PROJECTS\VisualStudio\Projects\test\test\Form1.cs	39	28	test
aus.

So wies aussieht werde ich da aber nicht mehr lang herumdüftelnwie ich das mit Objects machen kann, sondern einfach eine Arraylist verwenden. Da werde ich dieselben Probleme wahrscheinlich nicht haben.

Grüsse Daniel
 
Hei Leute ich entschuldige mich, nicht selbst darauf gekommen zu sein. Ich versuchte immer das Objekt mit
Code:
ConvertTo.
umzuwandeln anstattt implizit su sagen in was
Code:
(object[])

Trozdem ein Dank an Dich Nico, dass du geantwortet hast.

Grüsse
Daniel
 
Hi

Kein Problem. Dann markier den Thread bitte als Erledigt! Danke :)

Wir arbeiten zurzeit immer noch mit Visual Studio 2005 und das besagte Projekt wurde mit der Version 2003 erstellt. Es handelt sich um viele Threadübergreifende Vorgänge auf die Hauptform. Naja ist wohl nicht die beste Herangehensweise dies nicht zu fixen, aber ja.
Das ist nicht die Antwort auf meine Frage! ;) Unter VS 2005 kann man auch Anwendungen mit Threading entwickeln. Wo ist der Aufwand, das Projekt mit VS 2005 zu öffnen? VS übernimmt die Konvertierung doch für dich!
 
VS übernimmt die Konvertierung doch für dich!

Möchte mann meinen, diese besagte Konvertierung habe ich ja auch erfolgreich durchgeführt, nur kann mann die Applikation nicht starten. Denn bevor die Hauptform aufpoppt lächelt mir der erste

Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement lblServerConnectionStatus erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde.

von weiss ich nicht wievielen ins Gesicht.
Und deshalb hatte mann sich für die Weiterentwicklung in Visual 2003 entschieden.
 
Das liegt aber nicht an Visual Studio sondern an einem Fehler im Programm. Der eigentlich auch unter .NET 1.1 kommen sollten :confused:
So so, der Fehler ist da und sollte korrigiert werden! Auch wenn du / ihr weiter mit VS 2003 arbeiten wollt!
 
Unter 1.x wurde soweit ich weiß noch keine Exception geschmissen.

Dennoch ist eins klar, dies ist ein Fehler und muss abgestellt werden.
Auch in 2003, sonst gibt es ev. merkwürdige Effekte.

Sorry Nico für doppelt Post (das ich das gleiche schreib wie du), aber ich war gerade so hin und her gerissen ob ich posten soll oder nicht.
 
Ich würde es ja sogar interessant finden, eine Applikation zu verbessern welche ich nicht geschrieben habe und darin einige Fehler ausmerzen.

Und das der Weg des geringsten Widerstandes nicht der optimalste ist, ist mir ebenfalls klar. Aber was kann ich mich als Praktikant dagegen wehren, was chefe sagt ....

1 Argument dafür hätte ich ja nun schon durch Nico:
- eventuelle merkwürdige Effekte.


Aber das nimmt mir hier keiner ab, denn diese Software ist schon fast über 5 Jahren im Betrieb und das bei fast 20 Firmen. Und eben, es sind keine merkwürdigen Effekte bisher aufgetreten. Ich kann ja auch keine Argumente dafür aus dem Hut zaubern.

Habt ihr mir eventuell welche dafür

grüsse
und danke für die rege Beteiligung
 
Auf welchen System läuft den bisher das Programm?
Könnte mir gut vorstellen das es spätestens in Vista oder Win 7 kracht.
 

Neue Beiträge

Zurück