Zum Inhalt springen

FinalFantasy

Mitglieder
  • Gesamte Inhalte

    966
  • Benutzer seit

  • Letzter Besuch

Beiträge von FinalFantasy

  1. Hi,

    habe gerade Code entdeckt, der prinzipiel sowas hier macht:

    bool b = true;
    int i = 0;
    i += b;[/PHP]

    Nach meinem Verständnis ist sowas nicht so toll, da bool ja mit 0 = false und alles andere ist true definiert ist.

    Der Wert von i nach der Addition dürfte also undefiniert sein.

    Allerdings klappt das Konstrukt zumindest im Debug einwandfrei. Release hab ich jetzt nicht getestet.

    Was mich allerdings überrascht: Der VS2005 Compiler wirft hier nichtmal eine Warnung!

    Was haltet ihr davon? Sowas sollte man schon vermeiden, oder?

  2. p1 geht.

    p2 geht auch, da im Template ein Default-Typ (int) hinterlegt ist.

    p3 geht definitiv nicht, wie du sagst.

    p4 geht, wenn ein Typ Artikel definiert ist.

    p5 geht nicht, da das hier eine Dereferenzierung auf eine Variable wäre, aber ein Typ benötigt wird

    p6 geht auch, im Template wäre es halt dann ein Pointer auf einen Pointer.

    Sollte ich irgendwo falsch liegen, lasse ich mich gern korrigieren.

    BTW: man könnte es ja einfach mal ausprobieren :cool:

  3. Ich hab zwar nur VS2k5, aber soviel sollte da nicht um sein.

    Ich weiß nicht genau, wie eure Projekte so aufgebaut sind, aber ich organisier mir das hier anders.

    Normalerweise hab ich auf einem Monitor das Studio auf Vollbild und auf dem zweiten Monitor sind dann so ziemlich alle anderen Helferlein, wie Texteditor (für XML-, INI-Files...), Browser, MSDN, Outlook, ....

    Wenn ich an zwei verschiedenen VS-Projekten arbeite, kommt es auch mal vor, dass ich auf dem zweiten Monitor nochmal VS offen habe.

    Bei anderen Kollegen hab ich auch schon gesehen, dass sie mehr oder weniger alle Docks aus dem Studio gelöst haben und diese auf dem zweiten Monitor verteilt haben und so auf einem Monitor nur die Sourcen haben.

    Find ich aber eher unpraktisch, so viele lose Fenster.

    Theoretisch kannst du das Studio auch zweimal mit dem selben Projekt öffnen. Da nervt aber dann eher die Meldung, dass geöffnete Dateien von extern verändert wurden, wenn man zwischen den Instanzen wechselt.

  4. Genau solche Phänomene hatte ich vor Jahren auch mal. Da lags am Mainboard, das dann auch irgendwann total den geist aufgegeben hatte, da Elkos geplatzt sind. Nach ein bisschen Internetrecherche stellte sich dann auch raus, dass grad dieses Mainboard besonders anfällig für den Fehler war.

  5. Hi,

    kennt einer von euch den Werbespot wo eine französiche Frau sich drüber beschwert, dass die Deutschen Kondome auch Pariser nennen?

    Ich hab den glaub ich im Radio gehört und eben gegoogelt, aber ich find ihn leider nicht.

    Weiß vielleicht jemand, ob/wos den gibt?

    Der ist echt göttlich.

  6. Hi,

    hat hier zufällig jemand eine Idee oder Erfahrung, ob es möglich ist Handys, in meinem speziellen Fall ein Siemens S65 ohne Simkarte zu starten, so dass man in das Menü kommt und z.B. Kalender, Taschenrechner, Javaprogramme starten kann?

    Hintergedanke ist der, dass ich das Handy via Bluetooth als Fernbedienung für meinen PC benutzen möchte. Das funktioniert einwandfrei für z.B. TV schauen oder Winamp. Da Bluetooth bidirektional funktioniert, kann man so z.B. das Handydisplay nutzen um z.B. das EPG zur aktuellen Sendung im Handydisplay anzeigen lassen.

    Ich möchte dazu jedoch nicht mein aktuelles Handy benutzen, da durch dauernd aktiviertes Bluetooth der Akku immer ziemlich schnell in die Knie geht. Deshalb würde ich gern mein eigentlich ausrangiertes S65 benutzen.

    Gibts da ne Möglichkeit? Modden, alternative Firmeware oder irgendsowas? Oder gibt es andere Modelle, mit denen das geht?

    Klar kann man ne alte deaktivierte Simkarte reinstecken, aber so eine hab ich momentan nicht und es würde mich halt interessieren, ob es auch ohne geht.

  7. Ahh, hehe, tricky. :D

    Ich weiß jetzt nicht genau, wie sich das mit den ^-Handles verhält, aber du hast ja string^ und nicht string.

    Dass die string-Klasse keinen == Operator hat, kann ich mir kaum vorstellen, aber ich könnte mir vorstellen, dass der hier nicht greift, weil du nicht die Strings vergleichst, sondern deren Handles, und die dürften so gut wie IMMER unterschiedlich sein.

    string* a, b;
    a == b;[/PHP]

    funktioniert auch nicht, weil du hier die Pointer vergleichst und nicht die Strings. Weil man Pointer aber vergleichen kann, gibts auch keinen Compilerfehler, den du ja anscheinend auch nicht kriegst. Hätte die String-Klasse keinen Vergleichsoperator, müsstest du aber einen kriegen.

    In C++ (ohne Managed), müsste man hier die Pointer dereferenzieren:

    [PHP]*a == *b;

    würde funktionieren.

    Ich kann dir aber leider nicht sagen, wie das mit den ^-Dingern funktioniert. Aber hier sitzt vermutlich der Fehler.

    Statt mit == zu vergleichen, gibts aber auch sicher eine compare- oder equals-Methode. Statt (line != "") könntest du also auch (!line.equals("")) schreiben, was auch wieder funktionieren würde. (bzw. (!line->equals(""), falls Managed C++ hier auch noch zwischen "Pointer" und Objekt unterscheidet).

    Statt length auf 0 zu prüfen, gibts bestimmt auch eine isEmpty-Methode oder sowas ähnliches.

  8. Ich steck jetzt auch nicht so tief in managed C++ drin, aber soweit ich weiß, gibts da keine Pointer im C-Sinne mehr (die wären ja auch unmanaged). Der Ersatz ist das ^. Ich nenn das jetzt einfach mal "Verweis" um es nicht mit Referenzen gleichzusetzen.

    Das vor dem Gleichheitszeichen ist als ein Verweis auf ein Array mit Verweisen auf Strings, also das Äquivalent zu etwa "std::vector<std::string*>* array".

    Managed C++ verwendet auch eine Art GarbageCollector, der eben diese Verweise verwaltet und sich ums Löschen kümmert, soweit ich weiß.

    Sollte ich jetzt hier was falsches Erzählen, lasse ich mich gerne Berichtigen.

    Aber meine persönliche Meinung: Ich hab mich selbst nur kurz mit managed C++ befasst, und habe eigentlich keine Vorteile gegenüber C# entdecken können, ausser dass die Sytnax "unschöner" ist als von C#.

    Deshalb: Wenn schon .NET, dann doch auch gleich mit C#. (<- meine persönliche Meinung!!!!!)

  9. Die Notation kommt von Managed C++. Also C++ mit .NET. Microsoft hat da die Syntax etwas erweitert.

    Wie lautet denn die Fehlermeldung genau?

    Enthält das Array denn Strings nach dem Aufruf von ReadAllLines, sprich: konnte wirklich was gelesen wurden?

    Liegt die auszulesende Datei benutzer.txt im Arbeitsverzeichnis des Programms? (Das kann auch vom Speicherort der .exe-Datei abweichen!)

    Gegebenfalls würde ich es mal mit einer absoluten Pfadangabe zur Datei versuchen, also wirklich "c:\\benutzer.txt" angeben. (Die Datei sollte dann natürlich auch direkt unter c: hinterlegt sein).

  10. Hi,

    passt wohl jetzt nicht so ganz in den Forumteil, aber woanders irgendwie auch nicht. Also bitte verschieben, wenns was besseres gibt.

    Mein Problem:

    Ich hab massives Tearing im VLC, besonders, wenn ich DVD schaue. Hab schon im Catalyst (Ati X1850 GTO) gesucht, aber keine Einstellung für VSync gefunden. Habs mit "Force Refreshrate 60Hz" probiert, bringt aber nichts. Im VLC selber find ich auch keine Einstellungsmöglichkeiten.

    Im WMP tritt der Effekt nicht auf, aber der zickt bei vielen DVDs dank Kundenvergraulfunktionen der DVDs.

    Mit WinDVD hab ich zwar kein Tearing, aber das zieht irgendwie ganz fürchterliche Schlieren.

    Hat jemand eine Idee, wie man das Problem im VLC noch beheben könnte?

  11. Ich glaube nicht, dass RMI an sich das Problem ist. Ich glaube, dass das Polling schuld ist. Vielleicht noch das Polling in Verbindung mit RMI, aber nicht RMI alleine.

    Beim chatten kommt man auf geschätzte, mittlere Datenraten von 50-100Byte/s (mal geschätzt, wieviel man pro Sekunde zu tippen schafft). Selbst bei 200% Overhead und 500 Usern, die sich gleichzeitig die Finger wund schreiben, kommt man gerade auf 300Byte/s*500 ~ 150kb/s.

    Also wenn das RMI das nicht bewältigen können sollte (davon sind ja grad mal 1/3 Nutzdaten!!), dann ist das Protokoll meiner Meinung nach absolut unbrauchbar.

    Und das ist noch ne pessimistische Worst-Case-Überlegung.

    Aber wenns wirklich an dem RMI liegt, belehrt mich ruhig eines besseren.

    Und wenn RMI nicht stateless ist, dann steht die Verbindung ja dauerhaft. Ist die dann nicht bidirektional?

  12. Ich hab keine Ahnung wie das RMI funktioniert, aber ICQ, Jabber usw. senden und empfangen denke ich mal über die gleiche Verbindung. Die Verbindung steht also schon, wenn der Server was zum Client schicken will. Es muss sich also keine neue Verbindung von Aussen durch Firewalls und Router bohren.

  13. Warum schickt der Server nicht einfach neue Nachrichten zum Client? Dieser hat sich ja vorher (nehme ich an) beim Server angemeldet, ist also vom Server aus erreichbar.

    Das was du gemacht hast, hört sich für mich nach Polling an. Weiß zwar nicht, ob das das Performanceproblem ist, aber das ist schonmal ungünstig.

    Wenn jeder Client 1x pro Sekunde pollt, dann hast du bei 500 Clients schon 500 abfragen, die der Server pro Sekunde abarbeiten muss, auch wenn keine einzige Nachricht versendet wurde.

  14. Hi,

    schonmal Danke, den Link zur IT Akademie werde ich mir noch genauer ansehen, sieht aber auf den ersten Blick ganz gut aus.

    Auf die Kurse von Microsoft bin ich mittlerweile auch gestoßen, die beziehen sich aber soweit ich gesehen habe, alle auf .NET, was mir in meinem momentanen Job überhaupt nichts bringt. Leider ist das hier auch nicht so allgemein, wie beim MCSE beispielsweise.

    Wie siehts aus mit Quereinstieg als Systemintegrator? Hat da schon jemanden Erfahrungen gemacht? Wie könnte man so einen Einstieg hinkriegen?

  15. Sorry, ich vergaß:

    Was habe ich bis jetzt gemacht:

    • Massiv C++, in der Ausbildung 2 Jahre mit Firmeneigenen Framework und jetzt die letzten 2,5 Jahre eine Windowsanwendung mit Qt
    • ansonsten habe ich zeitweise schon Applikationen in Delphi und C#.NET entwickelt (ca. ein dreiviertel Jahr gegen Ende der Ausbildung und danach)
    • ein Jahr lang hab ich SAP-Zeugs mit ABAP entwickelt, wobei mir das überhaupt nicht gefallen hat.

  16. Hi,

    ich hab bereits nach meinem Fachabi (FOS) eine Ausbildung zum FIAE abgeschlossen und arbeite in diesem Beruf mittlerweile 3 Jahre.

    Jetzt würde ich mich gerne Weiterbilden, die Frage ist nur wie?

    Für Systemintegratoren gibt es ja auch den MCSA und MCSE, CCNA.... mir ist leider absolut nichts ähnliches im Anwendungsentwicklungsbereich bekannt.

    Auch gegen einen Wechsel in die Systemintegrationsschiene hätte ich nichts einzuwenden, würde mir sogar gefallen.

    • Vollzeitstudium scheidet aus finanziellen Gründen komplett aus
    • Fernstudium scheidet aus finanziellen und zeitlichen Gründen auch aus
    • BA-Studium in dieser Richtung gibts in Bayern nicht, nächstes wäre BW und da bräuchte ich dann auch eine neue Arbeitsstelle
    • Vernünftige Fortbildungskurse mit entsprechend angesehenen Abschlüssen habe ich bis jetzt noch nicht gefunden.
    • Techniker wäre möglich, wenn auch teuer, aber da zweifle ich irgendwie an dem Nutzen.

    Gibts noch andere Möglichkeiten? Wenn ja welche?

    Wie stehen die Chancen als Quereinsteiger in die Systemintegration als AE?

  17. Deinen Codeauszug verstehe ich jetzt nicht ganz. netid ist ein leeres Array und was hast du im ip Array und was im mask Array drinstehen?

    Die mask müsstest du ja eben erst "berechnen", grad der Teil fehlt in deinem Auszug.


  18. int cidr = 24;

    int mask = 0xFFFFFFFF << 32-cidr;

    cout << ((mask & 0xFF000000) >> 24)
    << ((mask & 0xFF0000) >> 16)
    << ((mask & 0xFF00) >> 8)
    << ((mask & 0xFF)) ;
    [/PHP]

    Also hier die Erklärung:

    1. 0xFFFFFFFF stellt einen Integer dar, der binär gesehen mit lauter Einsen gefüllt ist.
    2. Deine CIDR-Zahl ist in diesem Fall 24, d.h. die Netzwerkmaske besteht aus 24 Einsen + 8 Nullen.
    3. Das "<< 32-cidr" schiebt jetzt 8 Nullen von rechts in unseren komplett mit Einsen gefüllten Integer.
      Die Einsen die dabei vorne "rausfallen" sind einfach weg und stören nicht weiter
    4. das cout is der Standard-Output unter C++, wird also bei dir mit Java nicht funktionieren, hat aber keinen Einfluss auf die Funktionsweise
    5. "(mask & 0xFF000000)" maskiert unseren Subnetz-Integer so, dass nur die ersten 8 Bit (oder 1 Byte) übrig bleiben, der Rest sind also nur noch Nullen.
      Die für unsere gesuchte Zahl relevanten Daten (1 Byte, der erst Teil der IP-Adresse) stehen aber noch links im Integer.
      Würde man den Integer so als Zahl ausgeben, wäre die Zahl ziemlich groß, im Beispiel 4278190080.
      Da uns sowieso nur das erste Byte interessiert, schieben wir den Integer wieder um 3 Byte (24Bit) nach rechts. Die für uns interessanten 8 Bits stehen jetzt ganz rechts und vorne sind nur noch Nullen. Die resultierende Zahl ist also 255.
    6. Genauso funktioniert es mit der zweiten und dritten Stelle. Die Maskierung ist angepasst und es muss nur um 2, bzw 1 Byte gsechoben werden.
      Beim letzten Byte braucht man nichtmehr schieben, weil die Daten ja scho ganz rechts stehen.

    Binär gesehen läuft das dann so:

    [PHP]
    Netzmaske:
    11111111.11111111.11111111.11111111 entspricht 0xFFFFFFFF
    11111111.11111111.11111111.00000000 um acht Stellen nach links schieben


    Ausgabe:
    1.Stelle:
    11111111.11111111.11111111.00000000 Netzmaske
    && 11111111.00000000.00000000.00000000 Bitmaskierung 0xFF000000
    --------------------------------------
    11111111.00000000.00000000.00000000 das jetzt 24 Stellen nach rechts schieben
    24>> 00000000.00000000.00000000.11111111 entspricht 255

    2.Stelle:
    11111111.11111111.11111111.00000000 Netzmaske
    && 00000000.11111111.00000000.00000000 Bitmaskierung 0xFF0000
    --------------------------------------
    00000000.11111111.00000000.00000000 das jetzt 16 Stellen nach rechts schieben
    16>> 00000000.00000000.00000000.11111111 entspricht auch 255

    Ich denke der Knackpunkt ist hierbei nur die Bitmaskierung. Dazu dürfte man aber bei Dr. Google ziemlich viel finden.

  19. Ich meine mich zu entsinnen, dass im Linuxkernel auch Strukturen mit Funktionspointern verwendet werden.

    Funktionspointer sind Membervariablen (nämlich erstmal nur Pointer, egal auf was) in der Struktur oder Klasse.

    Dabei kommt mir folgende Frage: Der Linux Kernel ist doch in C geschrieben. Kann man denn in C auch schon Methoden in structs einbauen? Also wirklich C, so ganz ohne ++?

    Ich hab Strukturen immer nur in Verbindung mit Variablen und nicht mit Funktionen verwendet ...

    Hier sind korrekter ausgedrückt wohl eher Methoden als Funktionen gemeint (eine Funktion hat keine Klasse zu der sie gehört).

    Ob das dann guter Stil ist, ist wohl wirklich Geschmackssache. Ich verwende es eigentlich selten bis gar nicht.

  20. Ja, ist mir nachher auch aufgefallen, dass ja eigentlich nach Java gefragt war, aber Shift-Operator und Binär-Und-Operator wirds ja wohl auch unter Java geben, oder? ;)

    Wer verstanden hat, wies funktioniert, sollte da jedoch leicht auch auf andere Sprachen übertragen können :)

  21. hat jemand ne idee wie man auf "elegante" art die netzadresse berechnen kann?

    So etwa?


    int cidr = 24;

    int mask = 0xFFFFFFFF << 32-cidr;

    cout << ((mask & 0xFF000000) >> 24)
    << ((mask & 0xFF0000) >> 16)
    << ((mask & 0xFF00) >> 8)
    << ((mask & 0xFF)) ;
    [/PHP]

  22. Danke, das sind mal zwei brauchbare Antworten. :)

    Das mit dem Eventlistner werd ich mir mal genauer anschauen, klingt jedenfalls vernünftig.

    Den eigentlichen Widget in AWidget zu verpacken, wäre natürlich auch eine Möglichkeit.

    Manchmal sieht man den Wald vor lauter Bäumen nicht. :upps

  23. Das PlugIn-System hat mit dem Problem an sich nichts zu tun, also dazu nur soviel:

    Es gibt eine Basisklasse PlugIn von der alle PlugIns abgeleitet sind. Das Hauptprogramm kennt nur die rudimentäre PlugIn-Klasse. Alle Spezialitäten müssen demnach innerhalb der PlugIns realisiert werden.

    PlugIn ist in diesem Projekt vielleicht sogar der falsche Name, weil die Anwendung eigentlich nur ein Container für die PlugIns ist und die eigentliche Arbeit fast komplett aus den PlugIns kommt.

    Ein QWidget, der aus dem PlugIn stammt, wird in die Gui eingebunden. Um flexibel zu halten, kriegt die Anwendung nur ein QWidget, auch wenn das PlugIn intern beispielsweise einen QGraphicsView verwendet.

    Jetzt hab ich allerdings an diesen Widget spezielle Anforderungen, die ALLE Widgets aus ALLEN PlugIns mitbringen, obwohl diese intern höherwertige Klassen von QWidget verwenden. Die Hauptanwendung muss demnach diese Spezialität kennen. In einem puren QWidget ist diese Spezialität aber natürlich nicht enthalten.

    Würde es sich bei dieser Spezialität um eine simple Methode handeln, z.B ganz einfach "bool isXYSet()", wäre es kein Problem dies wie in meinem Beispiel zu realisieren.

    Jetzt brauch ich aber als Spezialisierung ein Signal oder einen Slot, um aber in meinem Interface (AWidget) einen Slot definieren zu können, muss ich selbst schon von QObject erben (und auch das Q_OBJECT Makro einbauen), da Slots sonst nicht funktionieren.

    Dieses geerbte QObject wird aber dann zum Problem, wenn ich das Interface (AWidget) via Mehrfachvererbung in einen QWidget einbinden will -> Mehrfachvererbung von der gleichen Basisklasse.

    Die einfachste Lösung wäre, wenn QWidget QObject nur virtuell erben würde und ich AWidget auch nur virtuell von QObject ableiten würde.


    QWidget müsste dann so aussehen:
    class QWidget : virtual public QObject {};

    AWidget wäre dann:
    class AWidget : virtual public QObject {};
    [/PHP]

    leider erbt QWidget aber QObject nicht virtuell.

    Ich arbeite aktuell mit VS2005 mit dem Microsoft Kompiler. Die Mac-Portierung folgt erst noch, ist also aktuell noch nicht in Arbeit.

    EDIT: Bevor danach gefragt wird: Die PlugIns sind DLLs die dynamisch geladen werden. Um sie dynamisch laden zu können, steht über dem ganzen nochmal eine C-Schnittstelle und die PlugIns werden darüber über eine Factory geladen.

  24. Ich muss bei C++ bleiben, da wir das in diesem Projekt mit Qt einsetzen. Die Software soll auch auf Mac laufen, deshalb auch Qt.

    Ich leg sehr viel Wert auf eine saubere OOP-Struktur, will aber trotzdem einen möglichst einfachen Weg gehen. Deshalb suche ich eben auch nach einer praktikablen Lösung.

    Templates sind mir auch schon in den Sinn gekommen. Dabei stoß ich allerdings auf das Problem, dass das ganze im Rahmen einer PlugIn-Struktur realisiert wird und dieses Problem die Schnittstelle betrifft.

    Templates müssen aber zur Kompilezeit mit den entsprechenden Typen erzeugt werden. Sollte also in einem PlugIn ein neuer Typ verwendet werden, kennt das Hauptprogramm diese Templatevariante nicht. Ich müsste also das Hauptprogramm ändern, was den PlugIn-Sinn zerstören würde.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...