Beiträge von Wasserleiche

    "Fehler in diesem Zusammenhang" heißt nur, dass ein Fehler irgendwo anders aufschlägt und gcc dir einen Tipp gibt womit dieser zusammenhängt.

    Das ist leider zu wenig Code um dir helfen zu können. Aber der Fehlermeldung nach vermute ich das es sich um const Probleme handelt. Eventuell mit "name", dass in der Klasse "programmWidgetBase" nicht als const behandelt wird...

    Da es sich bei dem Problem scheinbar um ein WinAPI oder MFC Problem handelt, kann ich dir leider nicht helfen. Kenne mich weder mit dem einen noch dem anderen aus, da ich ausschließlich auf Linux programmiere...

    Wo genau ist dein Problem? Lies die csv Datei Zeichenweise aus, und bei jedem Trennzeichen schreibst du den Inhalt in ein Feld einer Matrix. Dafür kannst du dir eine schöne Klasse mit ein paar einfachen Methoden schreiben, und später brauchst du dir nie wieder darüber Gedanken machen...

    Ich verstehe zwar jetzt wo das Problem ist, aber helfen kann ich dir dabei nicht.

    Denke allerdings das ein VPN Tunnel bei jedem Netzwechsel zusammenbrechen würde (zumindest einer, der auf TCP/IP basiert). Ich würde an deiner Stelle in anderen Foren nachfragen, dafür findest du hier wahrscheinlich niemanden. Versuchs beispielsweise mal hier.

    Viel Glück.

    PS: ist das ne Diplomarbeit? Klingt so danach...

    Nein, wahrscheinlich nicht. Ich kenne mich weder mit dem VPN, noch dem DHCP Protokoll aus.

    Aber was willst du denn eigentlich erreichen? Ist sicherlich nicht trivial ein VPN Client zu implementieren, da es sich auf verschiedene kryptographische Protokolle stützt. Außerdem läuft (IP)VPN über ein TCP Netzwerk. Wenn du jetzt plötzlich im VPN Netzwerk die IP eines Clients veränderst, bricht damit die VPN Verbindung zusammen.

    Zumindestens denke ich das :)
    Bitte nicht schlagen falls ich falsch liege...

    Ich verstehe noch nicht 100%ig was du machen willst. Was heißt VPN-"Einwahl"client? Einfach ein VPN Client der eine VPN Verbindung aufbaut?

    Und der Kommunikationsserver soll dann in diesem VPN Netz als DHCP Server dienen, oder wie ist das gemeint?

    Interessante Frage. Auch wenn ich mich noch nie damit beschäftigen musste (und ich grad im Prüfungsstress bin), dachte ich mir ich nehm mir mal ein paar Minuten um drüber nach zu denken.

    memset() nimmt die Zahl die ihr übergeben wird als unsigned char. Auf gut Deutsch: da unsigned char immer 1 Byte groß ist (bzw. sein sollte), werden die ersten 8 Bits der übergebenen Zahl (oder eben 1 Byte) genommen, und überall in jede Speicheradresse geschrieben.

    Ein short sollte üblicherweise 2 Byte groß sein.

    Wenn du jetzt beispielsweise als value 2 übergibst (was 00000010 Binär ist), wird das in beide Speicherzellen für dein short geschrieben. Ergibt 00000010.00000010.
    Ein cout auf irgendeine Stelle der map wird 514 ergeben (das ist die Zahl da oben Binär).

    [-Anmerkung: Unterschied zw. Little Endian & Big Endian gibts hier nicht-]

    Damit wäre geklärt was genau in die Speicherzellen geschrieben wird. Nur du willst eine negative Zahl speichern. Das ist jetzt doch um einiges schwieriger.

    Bei Intel Maschinen werden negative Zahlen als Zweierkomplement abgelegt.

    [-Zweierkomplement: Bits negieren und + 1 / erstes Bit gibt Vorzeichen an-]

    Übergibt man nun -2 an memset, was das Zweierkomplement von 2 ist (also 11111110), werden diese Bits in beide Speicheradressen geschrieben. Ergibt 11111110.11111110.

    Ein cout auf irgendeine Stelle der map ergibt jetzt -258, da das erste Bit die negative Zahl einleitet, und vom Rest das Zweierkomplement (hier x0000001.00000010) den Wert angibt = 258.

    Jetzt zu deiner -2 die überall stehen soll: dafür müsste 11111111.111111110 in den Speicherzellen stehen. Das schaffst du aber nicht, da das unterschiedliche Bytes sind, und memset immer die gleichen in die Speicheradressen schreibt. Ich bin mir daher ziemlich sicher, dass das mit memset unmöglich zu bewerkstelligen ist.

    Getestet hab ich das mit

    Das bestätigt meine Überlegungen. Hatte nie Zugriffsverletzungen...
    (Getestet: 32 Bit Intel System (= Little Endian) mit msvc2005 Compiler)

    Wichtig: bitte schlagt mich nicht, falls irgendwo ein Denkfehler drin ist...

    Nein nein, ich bin auch der Meinung das es nicht möglich ist. Wollte das nur nicht so deutlich sagen, weil ich mir nicht 100%ig sicher war.

    Aber wenn man sich überlegt, dass die Variablennamen ja nur in deinem Programm stehen, während der Laufzeit aber nur Speicheradressen, Pointer und sonstige sind, wird klar das es nicht gehen kann...

    Ok, jetzt versteh ich warum du das machen willst. Aber wenn ich ehrlich bin halte ich das für den unschönsten Weg.

    Du sparst dir ein Integer in einer Struktur oder Klasse, brauchst aber stattdessen Rechenzeit. Ein Integer ist ein primitiver Datentyp, den Speicher würde ich mir wirklich gönnen. Sogar wenn du die Daten über eine Serielle Schnittstelle überträgst, ist das nicht die Welt.

    Alles andere ist viel zu umständlich, nur um die Temperatur nicht extra übergeben zu müssen.

    Jaja, das ist mir schon klar gewesen. Ich habe deinen ersten Post verstanden. Ich verstehe nur nicht warum du die Zahl aus dem Variablennamen wissen musst.

    Also was ist der Grund, der diese Funktion nötig macht?

    Ich meine, eventuell gibt es einen anderen Weg um deine Aufgabe zu lösen. Denn das was du probierst, ist doch sicher nur ein Workaround für ein bisher ungelöstes Problem.

    Bitte nutze in Zukunft die Code-Tags, dann ist das ganze viel lesbarer und es kommen keine Smilies vor.

    Zu deinem Problem:

    Ich hab zwar keine Lösung, aber ich frage mich warum du wissen musst was für eine Zahl in deinem Variablennamen drin steht. Wenn du Informationen über einen Datentyp während der Laufzeit benötigst, kannst du RTTI (Realtime Type Information) nutzen.

    Bei 1. ändert sich garnichts, da zuerst --a ausgeführt wird, was a == 1 ergibt. Aufgrund dessen wird der zweite Teil von der if() Anweisung nicht mehr ausgeführt, weil es sowieso true ergeben würde. Und mit a++ wird a wieder inkrementiert.

    Also 1: a == 2 und b == 1

    Bei 2. muss der zweite Teil der if() Anweisung geprüft werden (hier ein &&, kein || ). Und da b == 0, ist die Abfrage false.

    Also 2: a == 1, b == 0

    Viel Glück bei der Prüfung.