Laden...
Avatar #avatar-3191.gif
MarsStein myCSharp.de - Experte
Sr. Softwareentwickler (ophthalmologische Lasersysteme) Trier -> München Dabei seit 27.06.2006 3.170 Beiträge
Benutzerbeschreibung

Forenbeiträge von MarsStein Ingesamt 3.170 Beiträge

18.08.2011 - 12:18 Uhr

Hallo,

zu Problem 1:
Der Offset ist falsch. Der Offset wird durch den zweiten Parameter angegeben, da steht bei Dir bytes, und das ist immer 0. Da sollte count stehen, alo die Anzahl der bisher gelesenen Bytes, damit dahinter weitergeschrieben wird.

zu Problem 2:
Du liest aus allen Threads in denselben buffer. Dadurch kann da beliebig viel Mist passieren. Lege den buffer lieber lokal in der Receive-Methode an.

zu Problem 3:
Hängt mit Problem 2 IMO eng zusammen. Wenn Du das gelöst hast, sollte es besser funktionieren. Beachte aber dabei unbedingt [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Gruß, MarsStein

17.08.2011 - 22:30 Uhr

Hallo zusammen,

bleibt noch der Aspekt, dass es jede Menge Rechner/Netzwerke gibt, bei denen ein Zugriff auf das Internet und damit die Cloud weder gewünscht noch gestattet oder im Extremfall sogar technisch gar nicht möglich ist.
Es isnd ja nicht alle Auftraggeber/Kosumenten von Software Privatanwender, die das alles ganz toll finden (wobei das auch bei weitem nicht bei allen Privatanwendern der Fall ist). Schaut Euch z.B. mal an, wie viele Rechner im Polzeibereich eingesetzt werden, die schlichtweg nicht über eine Route ins Internet verfügen. Und das ist nur ein Beispiel. Das zieht sich durch so ziemlich alle Branchen.

Gruß, MarsStein

17.08.2011 - 22:02 Uhr

Hallo,

schau Dir mal das hier an: The Legion of the Bouncy Castle
Leider kann ich nix dazu sagen, wie dsa Ding zu benutzen ist, in der Feature-List wird aber PBEwithSHA-1and40bitRC2-CBC aufgeführt - das sieht nach dem aus was Du suchst.

Gruß, MarsStein

16.08.2011 - 17:47 Uhr

Hallo,

versuch es mal mit WebBrowser.Document.Body.InnerHtml
Siehe auch Webbrowser-Control: aktuellen Quelltext nach Änderungen durch Ajax abrufen bezügl. evtl. auftretender Probleme.

Gruß, MarsStein

16.08.2011 - 16:52 Uhr

Hallo,

der Zugriff auf den Webservice (und alles was er beinhaltet) sollte ausschließlich über den Dienstverweis (die Proxyklassen) laufen. Ein Projektverweis im Client-Projelt auf das Webservice-Projekt macht IMHO keinen Sinn - alles was der Service veröffentlich (und daher von aussen zugreifbar ist) sollte schon im generierten Proxy enthalten sein.

Gruß, MarsStein

16.08.2011 - 10:50 Uhr

Hallo,

kannst Du nicht das [Tutorial] Konfigurationsmodell im .NET Framework benutzen? Für die Konfiguration ist das die empfohlene Vorhgehensweise.

Gruß, MarsStein

15.08.2011 - 02:14 Uhr

Hallo,

Eine externe Webanwendung soll eine .exe Anwendung (C#) ausführen. Kannst Du das mal genauer ausführen? So wie ich das jetzt verstehe, wäre das sicherheitstechnisch hochgradig bedenklich, weshalb ich denke, dass das nicht funktioniert. Aber vielleicht verstehe ich einfach nicht richtig, was Du eigentlich willst... das ist etwas zu schwammig formuliert.

Gruß, MarsStein

15.08.2011 - 01:28 Uhr

Hallo zusammen,

vom Prinzip her stimme ich Gü zu. In der Praxis ist es aber oft egal, weil jede Revision nur eine Cheap Copy (Google bzw. SVN Doku) der Vorgängerversion ist.
Wenn allerdings Branches oder Tags ins Spiel kommen, sind eigene Repositories iMO auf jeden Fall sinnvoll (auch wenn diese selbst lediglich Cheap Copys der Original-Version darstellen) - und das wird v.a. bei größeren Projekten und Teamarbeit frühre oder später der Fall sein. Es ist dann einfach übersichtlicher.

Gruß, MarsStein

15.08.2011 - 01:09 Uhr

Hallo,

Jetzt ist halt das Problem das ich nicht weiß wie ich 2 Clienten miteinander verbinden kann, ohne das ich in deren Router Portforwarding einstellen muss um auf die herkömmliche Methode zu verbinden. Für dieses Vorhaben könntest Du Dir mal UDP Hole Punching ansehen. Das ist auch die Technik, mit der z.B. Skype Direktverbindungen zwischen 2 Clients ermöglicht, die beide hinter einer Firewall sitzen. Bei Freund Google solltest Du mit diesem Stichwort etliche Informationen finden.
Das Prinzip ist ganz gut in dem Heise-Artikel Der Lochtrick beschrieben.

Gruß, MarsStein

EDIT: UPNP mag ja schön und gut sein, wird aber

  1. nicht von allen Routern unterstützt
  2. muss auf dem Router i.d.R. erstmal aktiviert werden
12.08.2011 - 16:36 Uhr

Hallo,

benutzt Du als Zielframework das .NET 4.0 Client Profile?
Dann stell mal um auf das "vollständige" 4.0 Framework (in den Projektoptionen).

Gruß, MarsStein

12.08.2011 - 13:00 Uhr

Hallo,

dann reicht es wenn in der app.config des Client die Adresse auf die neue gesetzt wird. Das war AFAIR leider nicht immer so, und wäre damit abhängig von der verwendeten .NET-Version.
Aber einfacher ist es allemal, da hast Du recht.

Gruß, MarsStein

12.08.2011 - 11:53 Uhr

Hallo,

schwer zu sagen woran das liegt. Bist Du sicher, dass das Script nicht ausgeführt wird? Was genau passiert denn (nicht)? Hast Du es mal mit einem JS-Debugger verfolgt?
Schau auch allgemein mal den Quelltext der gerenderten Seite im Browser an, da müsste die Ursache feststellbar sein (ggf. relevanten Ausschnitt hier posten)

Gruß, MarsStein

12.08.2011 - 11:24 Uhr

Hallo,

Muss ich da im Quellcode noch was verändern?

Ja, ggf. musst Du den Namespace anpassen. Du kannst aber bei erstellen der Referenz bereits darauf achten, dass derselbe Namespace wie bisher verwendet wird (falls das nicht schon automatisch so ist, bin gerade nicht sicher).

Das bleibt so, das ich da in meinem Client-Programm praktisch eine Instanz der WebService Klasse erstelle und mit diesem Objekt dann im Client Programm arbeite, oder?

Ja. Es sollte alles genauso funktionieren wie mit dem Development-Server.

Gruß, MarsStein

12.08.2011 - 11:06 Uhr

Hallo,

Muss ich da in meinem Client irgendwas entsprechend verändern oder eine Konfigurationsdatei anpassen?

Du Kannst die Servicereferenz neu erstellen, und dabei die Adresse des Servers angeben.

Gruß, MarsStein

12.08.2011 - 10:23 Uhr

Hallo Neidhard,

das DISTINCT irritiert mich ebenfalls in diesem Zusammenhang.

Dazu hast Du ja das Problem, dass Du mehrere Datensätze aus Tabelle2 einem Datensatz aus Tabelle1 zuordnen willst, auf eine Art und Weise, dass nicht mehrere Ergebnisdatensätze entstehen, sondern die Werte aus Tabelle 2 in der Zieltabelle auf unterschiedliche Spalten verteilt werden sollen. Ich würde da mit Unterabfragen drangehen:

SELECT Tabelle1.Objektname, Tabelle1.Standort, Unter1.Value AS Rohstoff, Unter2.Value AS Gewicht
FROM Tabelle1 
LEFT JOIN (SELECT Objektname, Description2, Value
           FROM Tabelle2
           WHERE Description2='Rohstoff') AS Unter1
ON Tabelle1.Objektname = Unter1.Objektname
LEFT JOIN (SELECT Objektname, Description2, Value
           FROM Tabelle2
           WHERE Description2='Gewicht') AS Unter2
ON Tabelle1.Objektname = Unter2.Objektname
WHERE (Tabelle1.Standort LIKE 'Maschine%')

IUndisposable war schneller, und auch seine Lösung sieht interessant aus

Gruß, MarsStein

11.08.2011 - 22:02 Uhr

Hallo,

See server logs for more details.

Hast Du das mal gemacht? Findet sich da irgendwas, was mit dem Fehler in Zusammenhang steht?
Ausserdem könntest Du mal mit einem Sniffer nachsehen, was da so tatsächlich über die Leitung geht - insbesondere ob eine Response überhaupt ankommt; andernfalls ist die Ursache entweder serverseitig zu suchen, oder schon der Request weist ein Problem auf, mit dem der Server ggf. nicht klarkommt - drehst Du evtl. da noch irgendwas?

Gruß, MarsStein

09.08.2011 - 22:48 Uhr

Hallo,

Werde trotz meiner Suche die Process.Start() Variante nehmen

Bedenke aber dabei, was passiert, wenn ein Benutzer einen zweiten Datensatz im Formular öffnet - wenn du da auf einem Datensatz ausschliesslich hantieren willst, ist der Weg mit einer einzigen Anwendung (und einer eigenen Form für die Formularansicht) wesentlich einfacher zu beschreiten, und auch sonst viel gängiger und für den Anwender transparenter.

Gruß, MarsStein

EDIT:

Allein schon wegen der Übersicht.

Übersicht innerhalb des Projektes schaffst Du Dir, wenn Du allen Klassen/Strukturen/Interfaces separate Code-Dateien gibst.

09.08.2011 - 22:16 Uhr

Hallo,

Meine Formularansicht ist ebenso eine eigene Formanwendung.

Dann geht das, indem Du Process.Start(<Pfad zur anderen Anwendung>) mit entsprechenden Commandline-Parametern aufrufst, die den im Formular anzuzeigenden Datensatz auf irgendeine Art und Weise (z.B. Übergabe einer eindeutigen ID) eindeutig refenenzieren, und diese Parameter auf der Gegenseite dann parst.

Allerdings: Muss es sein, dass das getrente Anwendungen sind? Wenn Du die Formularansicht in derselben Anwendung - als eigene Form - implementierst, wie die ursprüngliche Ansicht, sollte es um einiges einfacher werden. Helfen kann Dir dann ggf. [FAQ] Kommunikation von 2 Forms und [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke/Dispatcher.Invoke)

Gruß, MarsStein

08.08.2011 - 19:01 Uhr

Hallo Floste,

Du bist gleich in 2 fettnäpfchen auf einmal getreten:

So genau hatte ich den Code gar nicht angesehen - hätte ich wohl tun sollen.

break; bzw. return;

Ich dachte es ginge darum, die äußere for-Schleife abzubrechen (in der GetString aufgerufen wird)...
Aber die ist bei näherem Hinsehen, wie Du richtig schreibst, ja auch schon Unsinn, weil man erst mal das Laden der Seite abwarten sollte, bevor man neu navigiert 🤔

Gruß, MarsStein

08.08.2011 - 17:11 Uhr

Hallo,

aber ich weiß nicht wie ich meine Schleife anhalten kann

In einer boolschen (Member)variablen merken, wenn du durchgekommen bist, und diese in die Abbruchbedingung mit aufnehmen.

Gruß, MarsStein

08.08.2011 - 14:49 Uhr

Hallo,

versuch mal, in den Projekteinstellungen die Zielplattform von "AnyCPU" bzw. "x64" auf "x86" umzustellen. Ggf. ist dann aber trotzdem noch eine Anpassung im IIS notwendig... Welche Version vom IIS hast Du denn?

Gruß, MarsStein

08.08.2011 - 14:22 Uhr

Hallo,

das könnte ein echter Grund sein 😃

Meinst Du diese Seite hier: Jet for Access, Excel and Txt on 64 bit systems?
Da asteht ja dann auch, was Du machen kannst, um das Problem zu umgehen.

Gruß, MarsStein

08.08.2011 - 14:10 Uhr

Hallo,

Ich kann Dein Prolem nicht nachvollziehen, habe es mit Deinem CSV-Beispiel und Deinem exakten Code probiert - es wird alles ordentlich ausgelesen und dargestellt, ausser dass die Daten alle in eine Spalte gelesen werden (wegen des Delimiter).

Machst Du irgendwas im CodeBehind mit der GridView (ausser setzen der DataSource)?

Gruß, MarsStein

08.08.2011 - 13:51 Uhr

Hallo,

hast Du mal überprüft, was für Daten tatsächlich nach dem Fill in der DataTable stecken? Anzahl Rows/Cols wäre schon mal ein Hinweis.
Du könntest mal versuchen, den Delimiter im Connectionstring mit anzugeben, obwohl ich dem Bild nach nicht glaube, dass das die Ursache ist:

FMT=Delimited(;)

Wie sieht denn die Definition der GridView im Markup aus?

Gruß, MarsStein

07.08.2011 - 11:24 Uhr

Hallo,

Was muss ich denn nun tun, um das Ganze ansprechen zu können?

Eine Instanz von dem Typen erstellen? Mit new MantisConnectReference.MantisConnectPortTypeClient()?

Gruß, MarsStein

05.08.2011 - 14:14 Uhr

Hallo,

normalerweise kann ein Webservice seine zugehörige WSDL über eine bestimmte URL selbst ausliefern. Wenn Du diese URL kennst, kannst Du im VS eine Webservice-Referenz hinzufügen und dort die URL angeben, dabei wird eine Proxyklasse erstellt, mit der Du die API ansteuern kannst.

Kennst Du die URL nicht, hast aber eine WSDL-Datei des Webservice, kannst Du daraus mit dem Tool wsdl.exe eine solche Proxyklasse generieren lassen -> die .cs-Datei, die dabei rauskommt, einfach mit ins Projekt aufnehmen.

Gruß, MarsStein

05.08.2011 - 13:28 Uhr

Hallo,

es gibt bei Codeplex auch einen Wrapper für ImageMagick

Vielleicht ist auch die LowLevelGraphicsLibrary interessant für Dich. (da war Gü mal wieder schneller 😃 )

Gruß, MarsStein

05.08.2011 - 10:23 Uhr

Hallo,

ich habe da noch was im Hinterkopf, dass das mit PNG nicht direkt funktioniert. Ich glaube, das betrifft den IIS, mit dem in VS integrierten Development-Server müsste es sogar funktionieren.
Wie auch immer, ein Workaround ist es, das PNG in einen MemoryStream zu speichern und dann das Bytearray aus dem MemoryStream in den ResponseStream zu schreiben (unter .NET 4 kannst Du dafür auch Stream.CopyTo verwenden).

Gruß, MarsStein

EDIT: siehe auch ASP.NET Erstellen von PNG Image erzwing Save-Dialog

05.08.2011 - 10:11 Uhr

Hallo,

den Vorschlag von talla, den bool zurückzugeben und die Response als out-Parameter zu nehmen finde ich etwas eleganter, weil Du den Aufruf direkt in die if-Bedingung schreiben kannst.

sr.ReadToEnd().Replace("amp;", "");

halte ich für bedenklich, erstens könnte das ganz normal im Text vorkommen, also nicht als Entity (wenn kein & davorsteht). Zweitens ist nicht garantiert, dass die Entitiy für das & überhaupt als &amp; übermittelt wird. Gültig wäre auch eine Entity, die einen Unicode-Wert angibt, für das & z.B. & #38;. Vgl. dazu die HTML-Zeichenreferenz bei SelfHTML.

Benutze lieber die HttpUtility.HtmlDecode-Methode.

Gruß, MarsStein

04.08.2011 - 15:13 Uhr

Hallo,

hast Du Dich (wie hier im Beitrag) einfach nur verschrieben (es heisst line-height) ??
Wenn nicht, für welches Element willst DU die Zeilenhöhe denn setzen, und wie versuchst Du das?

Gruß, MarsStein

04.08.2011 - 13:43 Uhr

Hallo,

wie habt ihr das denn mit der Puffergrösse in den synchronen Methoden gelöst? Denn in der synchronen ReceiveFrom-Methode ist die Problematik ja genau dieselbe - wenn's damit läuft, mach es einfach genauso.

Gruß, MarsStein

03.08.2011 - 13:54 Uhr

Hallo,

Tabellen sollten generell nicht (mehr) zur Positionierung von Elementen genutzt werden!

Kann ich bedingt unterstützen. Es ist nicht mehr zeitgemäss, eine ganze Seite mit Tabellen zu layouten, wie das früher üblich war.
Allerdings bin ich schon ein Freund davon, kleinere Bereiche innerhalb der Seite mit Tabellen zu formatieren, v.a. wenn sie eine eindeutige Tabellenstruktur aufweisen, wie z.B. Formulare mit Eingabefeldern vor denen jeweils noch ein Label steht.
Dieser ganze (kleine) Tabellenbereich kann dann mit Styles in der Seite positioniert werden.

Gruß, MarsStein

03.08.2011 - 13:28 Uhr

Hallo,

Was wäre Eurer Meinung nach eine vernünftige Methode.??

Tabellen...
Oder Du positionierst alles über CSS, siehe Positionierung und Anzeige von Elementen

Gruß, MarsStein

03.08.2011 - 09:21 Uhr

Hallo,

siehe zum Thema DB-Verbindungen auch [Artikel] Ressourcen schonen - Datenbanken richtig öffnen und schließen

Das Application_End-Event wird normalerweise gefeuert, wenn die Anwendung entladen wird (vom IIS), bzw. der Anwendungspool beendet wird.
Es gibt auch Events, die nach der Abarbeitung einer einzelnen Anfrage gefeuert werden. Aber die Datenbank solltest Du trotzdem nur bei Bedarf öffnen und gleich wieder schließen.
Ob ein Browserfenster noch offen ist, bekommst Du nicht zuverlässig mit - Man sollte bei Webanwendungen nie versuchen, das zu ermitteln um serverseitig zu reagieren. Es besteht in vielen Fällen auch kaum ein Unterschied zwischen "Fenster ist noch offen" und "Cookie ist noch da Fenster wird mit vorheriger URL neu geöffnet".

Gruß, MarsStein

29.07.2011 - 14:57 Uhr

Hallo,

AppPool-Kto hat Lesen\Schreiben\Ändern-Berechtigungen auf Zielverzeichnis bekommen.

Das "Network Service"- bzw "Netzwerkdienst"-Prinzipal auch?
Ansonsten mal als Zielverzeichnis "~/App_Data" oder ein Unterverzewichnis davon probiert?

Gruß, MarsSTein

29.07.2011 - 14:53 Uhr

Hallo,

danke, das muss ich mir nochmal anschauen.
was den Header HTTP_X_REQUESTED_WITH angeht, ich habe eine Website auf der Ajax über eine 3rd-Party-Lib mit JSON gespielt wird. Da ist es zumindest im Firefox so, dass definitiv kein solcher Header verwendet wird. Es scheint also noch was anderes dahinter zu stecken.
Der Accept-Header sieht dabei wie folgt aus:

text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Das spricht für

Es unterstützt alle text-basierenden Formate

Leider habe ich momentan keine Umgebung, in der ich alle Tests so durchführen kann, wie ich es geren tun würde (auch zuhause nicht).
Wenn dem wieder so ist, werde ich das nochmal genau testen und meine Ergebnisse dann ggf. zusammenfassend posten.

Gruß, MarsStein

EDIT: Ich galube mic zu erinnern, dass in einer früheren Firefox/Firebug-Version auch XML gezeigt wurde, bin aber nicht mehr sicher. Bei der aktuellen Version von beidem ist dem jedenfalls nicht mehr so 😦

29.07.2011 - 14:14 Uhr

Halo Abt,

ich war bisher der Auffassung, dass der Datenaustausch im XMLHtpRequest dann auch über ein XML-Format stattfindet...
Dass man auf die Lib verzichten kann, sollte schon so sein. Aber muss man dann die Daten nicht in XML verpacken bzw. die Antwort aus XML wieder auspacken (immer unter der Prämisse, dass kein Browser vorhanden ist, der einem ggf. diese Arbeit abnimmt)?
Ich werde das mal mit dem Sniffer genauer ansehen.

Gruß, MarsStein

29.07.2011 - 11:06 Uhr

Hallo,

es gibt einerseits die MouseMove-Events, und dann noch die Focused-Property, die true ist, wenn ein Control den Focus hat.

Gruß MarsStein

29.07.2011 - 10:30 Uhr

Hallo,

für den Client ist die Anfrage identisch

Nicht ganz. Für Ajax wird ein spezieller XMLHttpRequest benutzt. Diesen haben die Browser eingebaut, aber die Implementierungen unterscheiden sich. Per jQuery hat man wieder eine einheitliche Schnittstelle für alle Browser, die die Sache transparent macht. Im Hintergrund wird da aber einiges getrieben.
WebClient und HttpWebRequest unterstützen den XMLHttpRequest leider nicht von Haus aus, daher muss man IMO entweder selbst ein geeignetes XML-Dokument bereitstellen oder mal in den unverwalteten Schnittstellen suchen, im MSXML2-Namespace ("Microsoft XML" COM-Bibliothek) gibts vie XMLHTTP-Zeug.

Gruß, MarsStein

26.07.2011 - 19:33 Uhr

Hallo,

In UI könnte man anhand einer Exception einen bestimmten "Benutzerfreundlichere Fehlermeldung" ausgeben, was aus dem BusinessLayer nicht geht. Warum denn nicht? Du kannst ja im BusinessLayer ein Event feuern, für das Du Dich im UI registrierst, oder bei Bedarf die Exception weiterwerfen, wenn Du sie nicht behandeln kannst - dann sollte wieder OnError greifen.

Gruß, MarsStein

25.07.2011 - 14:25 Uhr

Hallo,

ganz allgemein sollte man IMO vorsichtig damit sein, unbedingt den Administrator zu verlangen. Es gibt durchaus Umgebungen, in denen es nur ganz wenige Administratoren gibt, aber weitreichende spezielle Berechtigungen über Benutzer- und Gruppenrechte bzw. -richtlinien an bestimmte Benutzerkonten vergeben sind. Dort ist es dann nicht sinnvoll, auf Administratorrechte zu prüfen, es könnte durchaus sein, dass der Benutzer/das Programm in der Lage ist, die gewünschte Aktion durchzuführen, obwohl er nicht Administrator ist.

Gruß, MarsStein

25.07.2011 - 13:57 Uhr

Hallo,

es soll eine BasePage (von Page abgeleitet) angelegt werden, in der das Page_Error() Event abgefangen und verarbeitet werden soll. macht bedingt Sinn, allerdings fängst Du auch dann die Fehler ganz zentral ab. Möglich ist aber, dass Du je nach Seite, in der der Fehler auftritt, anders reagieren willst. Seiten, bei denen das der Fall ist, müssen das Ereignis ohnehin selbst behandeln.

Es ist also i.d.R. nicht damit getan, alle Fehler an der selben Stelle zu behandeln, es hängt immer von der Art des Fehlers und den Seiten ab, in denen er auftritt. Ähnlich ist es ja auch in Nicht-Web-Anwendungen. Dort käme niemand auf die Idee, alle Fehler zentral zu behandeln - ich frage mich warum sowas gerade bei Web-Anwendungen immer wieder diskutiert wird.

Meiner Ansicht nach ist es am besten, die Fehler so früh wie möglich zu behandeln, und was man nicht behandeln kann, dann nochmal zentral zu abzufangen. Mit einer einzigen zentralen Stelle für die Fehlerbehandlung ist es IMO also - wie schon gesagt - nicht getan.

Gruß, MarsStein

25.07.2011 - 12:02 Uhr

Hallo,

dann ist Deine Schachteltiefe ja auch 3-stufig: Liste->Liste->Array.
also führt Attachments[0][0] zu dem ersten Array und Attachments[0][0][0] zu denm ersten Eintrag des ersten Arrays.

Das sind aber wirklich Grundlagen. Dein Screenshot aus dem Debugger zeigt doch die Struktur. Den Umgang mit Collections setzen wir als bekannt voraus.
Bitte beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.1

Gruß, MarsStein

EDIT:
Da es sich bei Dir um List<Object> handelt, musst Du die gefundenen Elemente noch casten - deshalb funktioniert bei Dir wahrscheinlich der Zugriff nicht. Denn ein Object hat ja keinen Indexzugriff.
Siehe dazu auch [Tipp] Casten aber richtig: Begriffe wie Cast / is / as

Du könntest für den dargestellten Fall auch eine stärker typisierte List<List<string[]>> verwenden, um dieses Problem zu umgehen.

25.07.2011 - 11:18 Uhr

Hallo,

über WebBrowser.Document kommst Du ans DOM. Da köntest Du den Link dann selbst entsprechend austauschen.

EDIT: Das halte ich für weniger aufwändig und verträglicher als in der Registry rumzumachen.

Gruß, MarsStein

25.07.2011 - 10:16 Uhr

Hallo,

zunächst ist "Erweiterte Suche" ein ganz normaler Link, der erst per Javascript gegen die Toggle-Funktion ausgetauscht wird.
Die Stelle ist die hier:

	<script type="text/javascript">
		if (!(window.navigator.userAgent.indexOf("MSIE 7") > -1 || window.navigator.userAgent.indexOf("MSIE 6") > -1))
			gE('id_eslink').href="javascript:toggle_display('id_eslink','es_main')";
	</script>

Nun hast Du das Problem, dass sich das WebBrowser-Control sich scriptseitig als MSIE 7 ausgibt (auch wenn Du eigentlich eine höhere IE-Version installiert hast), der Austausch somit nicht stattfindet, und "Erweiterte Suche" ein ganz normaler Link bleibt.
Ob Du das Control dazu überreden kannst, das anders zu machen, weiss ich leider nicht, aber ich denke die Chancen sind eher schlecht.

Gruß, MarsStein

25.07.2011 - 00:10 Uhr

Hallo,

Du scheinst nicht der einzige mit dem Problem zu sein, und ich kenne die Lösung auch nicht - würde Dir jedenfalls empfehlen Dir eher XNA anzuschauen.

Auf die Schnelle hab' ich mal das hier gefunden:
Using Visual C# Express 2010 and can't reference DirectX libraries...
Directx unter Visual C# 2010 Express einbinden

Der zweite sieht vielversprechend aus.

Gruß, MarsStein

24.07.2011 - 23:30 Uhr

Hallo,

wie die Datentypen bezeichnet sind, sollte IMO eigentlich keine Rolle spielen. Man tauscht ja nicht die Bezeichnungen der Datentypen aus, sondern lediglich die Daten. Ich kann mir auch nicht vorstellen, dass es für die Kommunikation mit dem Gerät wichtig ist, wie auf der Gegenseite (also Dienem Programm) die Datentypen benannt sind. Das sollte nur in der Definition des Protokolls eine Rolle spielen, damit man weiss, welche Datentypen zu verwenden sind, und in der jeweiligen Sprache mit der man implementiert muss man sich normalerweise die entsprechenden Typen raussuchen und verwenden.
Alles andere - da pflichte ich winSharp93 bei - hat IMO keinen Sinn.

Gruß, MarsStein

23.07.2011 - 18:30 Uhr

Hallo,

benutze die File.ReadLines-Methode, durchlaufe das Ergebnis mit foreach und teile die einzelnen Strings mit der String.Split-Methode in ihre Bestandteile auf.

Beachte ausserdem [Hinweis] Wie poste ich richtig? Punkt 1.1 und 1.1.1

Gruß, MarsStein

EDIT: winSharp93 hat mit dem folgenden Beitrag natürlich völlig recht. Wenn es keinen speziellen Grund gibt, eine eigene Textdatei zu benutzen, solltest Du die Anwendungskonfiguration dafür nutzen, die ist XML und somit auch Text.

23.07.2011 - 14:23 Uhr

Hallo,

ein etwas unkonventioneller Vergleich von 3 Smartphones (Android, WP7, iPhone) auf YouTube :evil:
Hot!!!

Gruß, MarsSTein