Laden...
Avatar #avatar-3347.jpg
mogel myCSharp.de - Member
Wissenschaftler (wahnsinnig) Dabei seit 05.08.2010 156 Beiträge
Benutzerbeschreibung

Forenbeiträge von mogel Ingesamt 156 Beiträge

29.03.2011 - 12:18 Uhr

ich hatte letztens schon jemanden erklärt - es kann durch aus auch effektiver sein wenn man alles von Grund auf neu Programmiert

26.03.2011 - 18:53 Uhr

Moin,


// C++
Car mycar = new Car(); // Variante 1
Car mycar();           // Variante 2

erste Variante erzeugt das Objekt auf dem Heap - letzte auf Stack ... der Stack wird beim verlassen der Methode aufgeräumt, somit auch das Objekt (Destruktor) ... soviel zu C++

Da Pointer in C# aber nicht mehr vorhanden sind,

Pointer gibt es (mehr oder weniger) immer noch in C# ... nennt sich jetzt Referenzen und der GC darf sie nach Bedarf im Speicher umherschieben ... über die Referenzen merken sich nur die Adresse im Speicher der vom GC veraltet wird ... es ist also ein Adresse wie beim Pointer ... Du kannst nur kein Schindluder wie bei C++ (oder andere Sprachen mit Pointern) treiben

frage ich mich, wofür wir das in C# überhaupt noch brauchen!?

aus dem gleichen Grund wie bei C++ ... damit die Objekte auf dem Heap landen und nicht im Stack ... der Stack ist meistens begrenzt (vgl. StackOverflowException) ... Arbeitsspeicher zwar auch (physikalisch), aber davon hast Du um einiges mehr

hand, mogel

btw. bitte ggf. um Korrekturen

26.03.2011 - 18:41 Uhr

wieviel Spieler erartest Du? ... ggf. solltest Du von TCP auf UDP wechseln -> TCP Verbindung max Anzahl

25.03.2011 - 18:58 Uhr

bin im moment beim umsteigen von Java auf c# und hab mich dort schon öfters mit netzwerkprogrammierung beschäftigt, allerdings ist das in c# ein tick komplizierter ^^.

wenn du java.nio verwendest hast, dann kann ich es theoretisch nachvollziehen ... ansonsten ist es kein Unterschied zu C#


                byte[] bname = new byte[4096];
                work.meldung(false, "Warte auf name");
                //int bytesRead1 = clientStream.Read(bname, 0, 4096);
                clients.Receive(bname);
                work.meldung(false, "name empfangen");
                byte[] bpasswort = new byte[4096];
                work.meldung(false, "warte auf pw");
                //int bytesRead2 = clientStream.Read(bpasswort, 0, 4096);
                clients.Receive(bpasswort);
                work.meldung(false, "pw empfangen");

das ist Grundsätzlich nicht falsch - ist aber auch nicht richtig

Nun zur sache, das was auskommentiert habe bei dem server ist eine andere methode die ich mal in nen tutorial gesehen hab, dort bin ich aber bis zum gleichen punkt gekommen.
Verbindung baut es erfolgreich auf und der nick name wird übertragen.

da ist bestimmt alles auf einmal angekommen und das hast Du beim Einlesen des namens geschluckt ... anschließend wartest Du auf das Passwort - welches aber schon beim Namen mit gelesen wurde ... daher bleibt er hängen

daher ist folgender Vorschlag korrekt

ich würde vorschlagen, dass du am Anfang die Länge der zu sendenden Daten schickst.

nicht vorschlagen sondern machen ... es heißt nicht umsonst NetworkStream ... das ist ein Strom aus dem kontinuierlich Daten "fließen" ... gleiche wie beim Wasserhahn - um da einen Liter ab zumessen nimmt man auch einen Messbecher ... was eben die Längenangabe ist

17.03.2011 - 16:22 Uhr

Moin,

wieso MainMenu wenn Du es zu bestehen Menus hinzufügen willst? ... afaik bringt Dir ein MainMenu nichts ... Du kannst aber ein normales MenuItem (?) beerben ... im Konstruktor erstellst Du dann entsprechend die anderen Menupunkte

hand, mogel

14.03.2011 - 12:05 Uhr

überprüfe mal die Datenrate zwischen WLAN und CNC-Maschine ... wenn die passt auch noch Start/Stop-Bits, Parität und Anzahl der Bits die übertragen werden sollen ... die Flußkontrolle ist auch noch eine Stolperfalle ... kryptische Zeichen entstehen auf der RS232 verbindung wenn da was nicht stimmt ... wenn die Maschine an einen anderen Port sendet, dann empfangt ihr nur was wenn ihr einen Socket aufmacht

ggf. mal den WLAN Adapter mit einem anderem tauschen ... .wennd er Fehler mitwandert, dann ist der WLAN Adapter defekt

26.02.2011 - 22:10 Uhr

Es wird alle 50ms ein Datagram gesendet, ich gehe davon aus, dass dies auch per TCP zu lösen gewesen wäre.

wie groß ist ein Datagram? Wird die Länge des Datagram mitgesendet?

Im Endeffekt haben die Kollegen in dieser Anwendung ja auch TCP im UDP nachgebaut.

wozu dieser Umweg 🤔

Aber was ist mir der Reihenfolge der Pakete?

darum kümmert sich das Netzwerk

Wenn TCP verwendet worden wäre, könnte es sein, das ein Paket viel später ankommt? Also nicht in der richtigen Reihenfolge?

nein - das Netzwerk sortiert die Pakete wieder in die richtige Reihenfolge ... das kann Dir eher bei UDP passieren ... das aber auch nur beim Transport durch das Internet (bzw. sehr komplexe Netzwerke)

hand, mogel

btw. werden Pakete fragmentiert, dann "baut" das Netzwerk die wieder aus den einzelnen Fragmenten zusammen ... wenn die ursprünglichen Pakete aus den Fragmenten nicht wieder hergestellt werden können, dann wird das Paket verworfen ... dann greifen die TCP bzw. UDP Verhaltensweisen

26.02.2011 - 16:19 Uhr

Ich habe das Problem bei einer Anwendung, dass jenes aber zu oft vorkommt. Obwohl die Anwendungen über UDP nur lokal Daten austauschen. Wenn es nur 5 Pakete am Tag wären ok. Aber ich habe ca. 100 Pakete am Tag die verloren gehen.
Auf einem anderen System wo die Software auf einem PC läuft und mit einem anderen PC über Ethernet kommuniziert habe ich Tagelang keinen Paketverlust!

könnte ja sein das die Qualität der Chips auf dem anderem System generell besser ist und dadurch die Pakete nicht verloren gehen .......

Bzw. habe ich keinen Paketverlust laut Wireshark, es kommt nur nicht in der .NET Anwendung mit UDPClient Receive an...

......... vieleicht sind aber auch die Treiber einfach Mist ... da spielen soviele verschiedene faktoren eine Rolle das es schwer zu sagen ist ... im übrigen ist der Paketverlust von TCP und UDP gleich (imo) ... nur bei TCP kümmert sich das Protokoll darum das die Paket erneut angefordert werden - deshalb fällt das verschwundene Paket nicht auf

Oder wie sind Deine Erfahrungen?

vorwiegend TCP verwenden

26.02.2011 - 00:21 Uhr

und das gesamte Verhalten von meinem Fenster veränder ich, indem ich es als Child vom Desktop setze?!

jain ... das Verhalten ist gleich - es fügt sich seiner Z-Order Sortierung ... wenn Du mehrere Fenster auf TopMost setzt, verhalten Die sich untereinander auch wie immer - bleiben aber immer vor allen anderen die nicht TopMost gesetzt sind ... Du hast quasi 3 Ebenen wo sich die Fenster mit der Z-Order anordnen ... TopMost / Normal oder "immer hinten" ... letzteres nur wenn Du das Fenster als Kind vom Desktop-Fenster festnagelst

In welche Funktion muss ich das machen...im Standardkonstruktor, oder in der Load-Funktion - oder ist das egal?

wenn das Handle des Fensters erstellt wurde

hand, mogel

26.02.2011 - 00:11 Uhr

Moin,

bei UDP? ... ja - indem Du TCP nachbaust ... sonst nein - ist ja "Sinn" des Protokolls

hand, mogel

25.02.2011 - 08:35 Uhr

Moin,

mit folgender Funktion


        private void Form1_Activated(object sender, EventArgs e)
        {
            SetWindowPos(this.Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW);
        }

schiebst Du Dein Fenster immer nach hinten ... es kann aber passieren das das Fenster kurz vorne ist ... Du manipulierst nur die Z-Order ... nicht das eigentliche Verhalten (also immer hinten bleiben)

hand, mogel

24.02.2011 - 11:42 Uhr

Moin,

Desktop holen
GetDesktopWindow Function

eigenes Fenster als Kind des Desktops setzen
SetParent Function

hand, mogel

20.02.2011 - 15:38 Uhr

es gibt einen Ordner der für alle Benutzer schreibbar ist ... der ist genau für Dein Problem ... dort kannst Du auch eine Config speichern

15.02.2011 - 13:54 Uhr

etwas Quellcode könnte zur Lösung beitragen

01.02.2011 - 21:08 Uhr

Moin,

der gepostete Code ist unwichtig ... Dein Flash-Client hat die Verbindung geschlossen

hand, mogel

28.01.2011 - 10:53 Uhr

subdomain.domain.com

einfach mal anpingen ... wenn der Rechner antwortet, dann liegt der Fehler im IIS ... ansonsten kann die Subdomain nicht aufgelöst werden und muss ins Zonenfile entsprechend eingetragen werden ... bei Strato werden per Default Wildcards verwendet - Hetzner macht das nicht ... hat damals das gleiche Problem als ich von Strato auf Hetzner gewechselt bin

hand, mogel

24.01.2011 - 09:52 Uhr

evt. http://www.activevb.de/tipps/vb6tipps/tipp0489.html ... ist aber VB5/6 - müsste also noch nach C# übersetzt werden ... zeigt aber zumindest den Weg

hand, mogel

23.01.2011 - 19:33 Uhr

Ziehen .............

das Jabber Protokoll schwirrt auch im Internet rum ... mach den Client aus, dann kannst Du auf dem entsprechenden Port einen Listener öffnen und mit dem Server diskutieren

hand, mogel

23.01.2011 - 12:27 Uhr

Moin,

Einen zweiten Listener kann ich ja nicht installieren.

das wird Dir in keiner Spraache gelingen ... ein Listener pro Port

Außerdem ist dann eine Funktion in Wireshark: Follow TCP-Straem. in der sind die Daten, die ich bräuchte

Follow TCP-Stream bringt für die Fragestellung erstmal nichts ... wenn Du Port 80 - also HTTP - verfolgen willst ... wozu dieser Aufwand ... das Protokoll ist im Internet öffentlich

was also willst Du machen?

22.01.2011 - 08:02 Uhr

HKann ich dies im selben Projekt machen?

nein - ist ja ein C#-Projekt ... damit wird auch der C# Compiler aufgerufen ... Du kannst aber in der Projektmappe eine DLL erstellen - auf Basis von VB.Net ... im C# Projekt verweist Du dann auf die VB.Net DLL

ich weis allerdings nicht ob mal mittels NMake im selben Projekt ein *.obj Datei aus der VB.Net-Klasse erstellen kann und diese dann mit den C# *.obj-Datei zu einer Assembly zu knebeln

hand, mogel

18.01.2011 - 21:37 Uhr

Nachdem ich die jeweilige Form in den Vordergrund bringe kommt erstmal Application.DoEvents() und danach wird die jeweils andere auf Visible=false gesetzt.

Application.DoEvents ist nur eine Bitte an das Betriebssystem den Message-Loop abzuarbeiten ... was es aber nicht machen muss

In etwa 9 von 10 Formwechseln klappt das auch. Ärgerlich ist das jedoch trotzdem.

dann mach es richtig ... starte einen Thread und Bring erst das Fenster nach vorne, mach eine Pause von einer Sekunde (oder so) und verstecke anschließend das andere

alternativ kannst Du auch mit einer Form arbeiten und UserControls

hand, mogel

16.01.2011 - 13:02 Uhr

Mir fehlt da noch die Berücksichtigung der Tatsache dass die Daten in mehreren Paketen hintereinander eintrudeln und die dann erst zusammengesetzt werden müssen.

darum kümmert sich das Netzwerk selber - d.h. im NetworkStream kommen alle Pakete in der richtigen Reihenfolge an ... außer UDP

Außerdem hast du bei UDP keine Garantie der richtigen Reihenfolge.

die Pakete werden beim Fragmentieren durchnummeriert und in der entsprechenden Sortierung wieder zusammengesetzt - das macht das Netzwerk ... allerdings dürfen bei UDP Fragmente fehlen - was dann das ganze Paket verwirft

Könnts daran liegen? Das würde auch erklären dass es im lokalen Netzt funktioniert, weil das schneller ist als das Interet und da werden die Daten vielleicht auch nicht ganz so zerrissen.

nein, die MTU ist im Internet wie im LAN gleich - 1500 Bytes ... http://de.wikipedia.org/wiki/Maximum_Transmission_Unit ... somit ist auch die Fragmentierung gleich

wenn es selbst mit TCP Probleme gibt, dann stimmt was beim Übertragen bzw. Empfangen nicht ... ich vermute da werden Exceptions geschluckt

hand, mogel

16.01.2011 - 12:50 Uhr

Was mich jetzt daran stört ist, das ich quasi die komplette google Siet anzeige. Ich brauch nur die reine karte.

Gibt es dafür einen anderen Link oder eine andere Vorgehensweise, damit ich das besser nutzen kann ?

Google stell für so etwas eine API bereit - musst mal da schauen

hand, mogel

15.01.2011 - 16:19 Uhr

ja - TCP Protkoll in UDP nachbauen ... macht aber keinen Sinn

15.01.2011 - 10:15 Uhr

Nur so nebenbei,

List<ListNode> LinkedList = new List<ListNode>();  

das ist nicht ganz korrekt und ergibt auch keinen Sinn - da die Verkettung für ListNode in List erfolgt und somit der Member Next sinnlos ist

ListNode First;
// dazu noch
public AddListNode(ListNode ln)
{
}
public DelListNode(ListNode ln)
{
}
// ... blabla

hand, mogel

09.01.2011 - 13:23 Uhr

Ja ich meine die SSID vom WLAN.

das LAN ließe sich evt. über die MAC-Adresse vom Gateway herausbekommen

19.12.2010 - 00:05 Uhr

Moin,

reader.ReadLine()

böses Foul ... ReadLine ist zum Lesen für Text-Dateien ... Du schickst aber komprimierte Daten - die musst Du auch als Byte-Array behandeln

hand, mogel

09.12.2010 - 23:08 Uhr

Moin,

schau mal bitte in den Einstellungen auf dem Router nach ... die ganzen Netzwerkdinge werden dem Client vom Server zugewiesen ... ansonsten hat Dein Problem erstmal weniger mit .NET am Hut

hand, mogel

08.12.2010 - 16:00 Uhr

habe mit dem Hersteller gesprochen, jedoch haben die keine Infos darüber und bieten nur deren Software als Lösung an.

ich übersetze das mal ... gib uns Dein Geld ... die Antwort hatte ich letztens auch (anderer Hersteller) ... wollten die 1.300€ für eine Lizenz haben damit ich ein eigens Programm schreiben kann was besser auf den Kunden zugeschnitten ist

hand, mogel

PS: früher wurde gearbeitet ... heute wird alles lizensiert und Hand aufgehalten

06.12.2010 - 14:39 Uhr

Moin,


[Obsolete("blablub")]
public void foo()
{
    throw new ApplicationException("blafasel");
}


public void bar()
{
    foo();
}

und den Rest macht NUnit (fallst Du es verwendest) ... ansonsten kommt die entsprechende Exception erst zur Laufzeit

hand, mogel

06.12.2010 - 08:41 Uhr

WCF Discovery Services

das ist nur die Verlagerung von reinem UDP auf Vorhandenes

04.12.2010 - 20:57 Uhr

UDP & Broadcast dürfte was für Dich sein

03.12.2010 - 19:59 Uhr

Ich gebs auf! Scheint keine Lösung dafür zu geben ...

doch - Windows API ... das Ganze wird einfacher wenn Du Dir dann eine entsprechende DLL mittels C++/CLI erstellst

03.12.2010 - 19:58 Uhr

Könnt ihr mir einen Hinweis geben, wie ich jetzt in c# die Verbindung zum Oszi herstelle?
Wie bereits erwähnt muss ich dazu "VISA calls" machen. Könnt ihr mir sagen, wie ich calls mache?

fragt doch bitte endlich mal den Hersteller nach einer API und lies die ... die Wahrscheinlichkeit das hier jemand schon mal mit Deinem Oszi gearbeitet hat und Dir helfen kann ist eher (bis sehr) gering

01.12.2010 - 23:36 Uhr

Falls ich einen falschen Ansatz habe, bitte ich um Tipps.

wirf mal bitte einen Blick in die API des Gerätes ... ich vermute sehr stark das das Gerät kein RPC kann

14.11.2010 - 23:40 Uhr

perfekt - danke, mogel

14.11.2010 - 08:32 Uhr

Ich würde mal sagen, klassische Endlosschleife (StackOverflowException) wegen "this.Controls" -)
Du meinst wohl "base.Controls".

funktioniert leider mit beiden nicht ... aber mit this hätte ich auch selber drauf kommen können 8)

13.11.2010 - 21:29 Uhr

Moin,

ich habe eine Panel beerbt und um einige kleine Dinge (Grafiken + weitere Panel) erweitert ... nun möchte ich das Panel somit als Ausgang für weitere GUI-Elemente verwenden ... sprich ich will Buttons etc. auf das Panel (bzw. dafür vorgesehen Bereich) ziehen ... dummerweise landet alles auf dem falschen Panel - dem Beerbten

also dachte ich mir ... überschreibe ich mal Controls


public new ControlCollection Controls
{
	get { if (init) return pnlBackground.Controls; else return this.Controls; }
}

bringt allerdings SharpDevelop zum Abstürzen ... wie mache ich das Ganze richtig?

hand, mogel

PS: mir fehlen im Moment die Suchworte - gebe mich quasi damit auch zufrieden

13.10.2010 - 10:17 Uhr

die sich aus der Metrik der Schnittstellen errechnet und dann eine Wertigkeit für 255.255.255.255 besitzt.

hä?? ... kannst Du mir das mal bitte etwas genauer erläutern

danke, mogel

03.10.2010 - 15:04 Uhr

Du kannst irgendwo die Maximal Höhe und Maximale breite festlegen - da müssen einfach nur die Werte bei Breite übereinstimmen ... rest mach .NET

12.09.2010 - 20:07 Uhr

Sofern [...] das Laufwerk nicht benannt ist, ist das VolumeLabel einfach leer.

könnte Sinn machen

DriveInfo Members

06.09.2010 - 10:18 Uhr

nein, es liegt nicht am HTTP/1.1. Wie gesagt kann ich bei dem erten oder zweiten Request auch eine beliebige andere URL eintragen.

gut - ich gebe mich geschlagen ... ich hatte bisher immer nur eine URL aufgerufen und das gleiche "Phänomen" beobachtet ... würde jetzt allerdings auf das Betriebssystem tippen - das das solange braucht den Socket einzurichten


Host: www.google.de - KeepAlive: true
	258 - 'http://www.google.de/search?q=foo
	79 - 'http://www.google.de/search?q=bar
	82 - 'http://www.google.de/search?q=something
Host: www.google.de - KeepAlive: false
	94 - 'http://www.google.de/search?q=foo
	80 - 'http://www.google.de/search?q=bar
	80 - 'http://www.google.de/search?q=something

Host: www.bing.de - KeepAlive: true
	86 - 'http://www.bing.de/search?q=foo
	94 - 'http://www.bing.de/search?q=bar
	106 - 'http://www.bing.de/search?q=something
Host: www.bing.de - KeepAlive: false
	78 - 'http://www.bing.de/search?q=foo
	81 - 'http://www.bing.de/search?q=bar
	68 - 'http://www.bing.de/search?q=something

Host: de.wikipedia.org - KeepAlive: true
	78 - 'http://de.wikipedia.org/wiki/Wikipedia:Hauptseite
	79 - 'http://de.wikipedia.org/wiki/Iso-Polyphonie
	84 - 'http://de.wikipedia.org/wiki/We_Insist!_Freedom_Now_Suite
Host: de.wikipedia.org - KeepAlive: false
	78 - 'http://de.wikipedia.org/wiki/Wikipedia:Hauptseite
	79 - 'http://de.wikipedia.org/wiki/Iso-Polyphonie
	80 - 'http://de.wikipedia.org/wiki/We_Insist!_Freedom_Now_Suite


	static class Program
	{
		/// <summary>
		/// Der Haupteinstiegspunkt für die Anwendung.
		/// </summary>
		[STAThread]
		static void Main()
		{
			List<MyHost> hosts = new List<MyHost>();
			hosts.Add(new MyHost("www.google.de", new String[] { "search?q=foo", "search?q=bar", "search?q=something" }));
			hosts.Add(new MyHost("www.bing.de", new String[] { "search?q=foo", "search?q=bar", "search?q=something" }));
			hosts.Add(new MyHost("de.wikipedia.org", new String[] { "wiki/Wikipedia:Hauptseite", "wiki/Iso-Polyphonie", "wiki/We_Insist!_Freedom_Now_Suite" }));
			foreach (MyHost host in hosts)
			{
				getHost(host, true);
				getHost(host, false);
				Console.WriteLine();
			}
		}

		static void getHost(MyHost host, Boolean keepalive)
		{
			Console.WriteLine("Host: {0} - KeepAlive: {1}", host.Host, (keepalive?"true":"false"));
			foreach (String path in host.Path)
			{
				String url = "http://" + host.Host + "/" + path;
				int zeit = getData(url, true);
				Console.WriteLine("\t{0} - 'http://{1}/{2}", zeit, host.Host, path);
			}
		}

		static int getData(String url, Boolean keepalive)
		{
			String temp = Path.GetTempFileName();
			Stopwatch sw = new Stopwatch();
			sw.Start();
			HttpWebRequest webRequest = (HttpWebRequest) WebRequest.Create("http://www.google.de");
			webRequest.KeepAlive = keepalive;
			WebResponse webResponse = webRequest.GetResponse();
			sw.Stop();
			webResponse.Close();
			return (int) sw.ElapsedMilliseconds;
		}

		private class MyHost
		{
			public String Host;
			public String[] Path;

			public MyHost(String host, String[] path)
			{
				Host = host;
				Path = path;
			}
		}
	}

03.09.2010 - 20:07 Uhr

Moin,

bevor ihr weitere Tests macht die nichts bringen

beim ersten Aufruf wird die TCP-Verbindung hergestellt -> Stichwort Handshake ... der kann schon mal dauern ... bei weiteren Verbindungsanfragen ist es durchaus möglich das noch der Header "Keep Alive" Gültigkeit hat -> Stichwort HTTP/1.1 ... damit wird die alte Verbindung weiter genutzt - der Handshake fällt also weg, es geht schneller

quasi - das Verhalten ist normal

hand, mogel

PS: ich hatte natürlich auch schon Webserver (Embedded Device) welches angeblich HTTP/1.1 auslieferte - aber die Verbindung sofort geschlossen hatte

31.08.2010 - 14:14 Uhr

So,

es liegt wirklich nur an UAC ... das Problem ist via cmd.exe nachzuvollziehen ... wenn man es als Administrator ausführt sind auch da die Netzlaufwerke weg ... UAC kopiert die Netzlaufwerke nicht mit in die neue Session

KB937624: After you turn on User Account Control in Windows Vista, programs may be unable to access some network locations

leider funktioniert das nicht bei mir unter Win7

hand, mogel

Nachtrag: funktioniert doch - nur einfach Rechner neu starten

31.08.2010 - 13:18 Uhr

*hass*, mein Unmut über UAC wächst mit jedem Tag den ich den Blödsinn nutzen muss,

ich habe mir jetzt nochmal ein kleines Programm geschrieben - nur ausgabe der Laufwerke

wenn ich kein Manifest drinnen habe, super ... sowie ich Manifest einbaue (benötige diverse Rechte) funktioniert es nicht mehr ... keine Zugriffsrechte auf Netzlaufwerke

kann ich das Problem entsprechend via UAC lösen??

31.08.2010 - 12:40 Uhr

das scheint aber dann speziell bei dir nur so zu sein, denn es gibt etliche Beispiele im Netz, bei denen auch die gemappten Netzwerklaufwerke angezeigt werden, s.

anscheinend bin ich der einzige ... unter 1.1 uwsste ich das es nicht ging - hatte auch irgendwie im Kopf das die regel mit 2.0 wieder gestrichen wurde ... jedenfalls knallts

folgendes liefert mir eine DirdctoryNotFoundException - das Laufwerk ist aber da


        Try
            IO.Directory.CreateDirectory(IO.Path.Combine(drive, verzeichnis))
        Catch ex As Exception
            mylogger.err(ex)
        End Try

Und selbst die einfache DriveInfo-Schleife liefert bei mir (WinXP) auch die Netzwerk-Laufwerke.

genau wegen XP versuche ich das Problem ja zu lösen ... selber habe ich Win7 64 ... das Programm "läuft" produktiv auf WinXP 32 - mit einem Netzlaufwerk ... beide Rechner finden die Netzlaufwerke nicht X(

31.08.2010 - 11:55 Uhr

super ...


    Sub TestDriveSpace()
        'http://msdn.microsoft.com/en-us/library/aa394592(VS.85).aspx

        Dim objWMI As Object
        Dim colDisks As Object
        Dim objDisk As Object
        Dim strDriveType As String = "unsued"

        objWMI = GetWMIService

        ' determine free space
        colDisks = objWMI.ExecQuery _
                        ("Select * from Win32_LogicalDisk")
        For Each objDisk In colDisks

            With objDisk

                Try
                    Debug.WriteLine("DeviceID: " & .DeviceID)
                    ' assume GB
                    Debug.WriteLine("Size: " & Format(.Size / 1000000000, "# GB"))
                    ' assume GB
                    Debug.WriteLine("Free Disk Space: " _
                               & Format(.FreeSpace / 1000000000, "# GB"))
                    Debug.WriteLine("% Free: " & Format(.FreeSpace / .Size, "Percent"))

                    ' http://msdn.microsoft.com/en-us/library/aa394173(VS.85).aspx
                    Select Case .DriveType
                        Case 0
                            strDriveType = "Unknown"
                        Case 1
                            strDriveType = "No Root Directory"
                        Case 2
                            strDriveType = "Removable Disk"
                        Case 3
                            strDriveType = "Local Disk"
                        Case 4
                            strDriveType = "Network Drive"
                        Case 5
                            strDriveType = "Compact Disc"
                        Case 6
                            strDriveType = "RAM Disk"
                    End Select

                    Debug.Print("Drive Type: " & strDriveType)
                    If (strDriveType = "Local Disk") Or (strDriveType = "Network Drive") Then
                        Debug.WriteLine("File System: " & .FileSystem)
                    End If
                    If strDriveType = "Network Drive" Then
                        Debug.WriteLine("Provider Name: " & .ProviderName)
                    End If
                    Debug.WriteLine("---")

                Catch ex As Exception
                    Debug.WriteLine(ex.Message)
                End Try
            End With

        Next objDisk

    End Sub

liefert mir


DeviceID: C:
Size: 268 GB
Free Disk Space: 195 GB
% Free: 72,60%
Drive Type: Local Disk
File System: NTFS
---
DeviceID: D:
Size: 215 GB
Free Disk Space: 150 GB
% Free: 69,74%
Drive Type: Local Disk
File System: NTFS
---
DeviceID: E:
Size: 94 GB
Free Disk Space: 20 GB
% Free: 21,89%
Drive Type: Local Disk
File System: NTFS
---
DeviceID: F:
Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.
Der Operator / ist für Typ DBNull und Typ Integer nicht definiert.
DeviceID: G:
Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.
Der Operator / ist für Typ DBNull und Typ Integer nicht definiert.
DeviceID: H:
Eine Ausnahme (erste Chance) des Typs "System.InvalidCastException" ist in Microsoft.VisualBasic.dll aufgetreten.
Der Operator / ist für Typ DBNull und Typ Integer nicht definiert.
DeviceID: P:
Size: 42 GB
Free Disk Space: 6 GB
% Free: 15,06%
Drive Type: Local Disk
File System: NTFS
---

also quasi nichts - es fehlen noch immer die Netzlaufwerk K, L und S

hand, mogel