kostenloser Webspace werbefrei: lima-city


Suche auf lima-city

  • in: Frage zu sizeof Operator (C++)

    geschrieben von primenic

    Ah OK - danke. :biggrin:
  • in: Frage zu sizeof Operator (C++)

    geschrieben von primenic

    Hallo,

    ich hab da mal eine kleine Frage zum sizeof Operator.

    Ich definiere folgende Struktur:

    struct FileHeader
    {
    	int numSceneObjects; // 4 Byte
    	char uuid[32]; // 32 Byte
    	bool hasAnim; // 1 Byte (oder etwa nicht?)
    };


    Nun sollte man doch annehmen, dass die Größe der Struktur 4 + 32 + 1 Byte ist.
    Wenn ich aber die Rückgabe des sizeof Operators in eine Variable schreibe, erhalte ich 40?!
    Wenn aber statt sizeof(FileHeader) folgender Ausdruck verwendet wird,
    int test = sizeof(int) + sizeof(char[32]) + sizeof(bool)

    dann ist das Ergebnis, wie erwartet, 37.

    Hat jemand eine Idee, woran das liegen könne?

    PS: IDE(+Compiler) ist VS2010
  • in: Allokierten Speicher über Zeiger initialisieren

    geschrieben von primenic

    reimann schrieb:
    Alles was du nach deiner Verwendungsbeschreibung brauchst steht hier schon im Thread. Aber du beharrst komischerweise auf dem malloc und da wüsste ich gern warum. o.o


    Ich beharr ja nicht auf malloc - ich wollte halt nur wissen, ob sowas (wie unter Edit2 in meinem letzten Post) funktionieren kann.

    darkpandemic schrieb: So, jetzt habe ich mir noch ein kleines Testprogramm gebastelt, das zeigt, dass das alles mächtig in die Hose geht:
    Das erste Problem ist schon die Zeile
    *p = MyClass();

    hier wird nämlich (wie bereits weiter oben erwähnt) das Objekt nur temporär erstellt, d.h. gleich nach dieser Zeile wird das Objekt wieder destruiert, was schon mal zu einer schönen Heap-Corruption führt.
    Und bei
    delete p;

    verabschiedet sich das Programm mit einem Core-Dump.
    Also: Finger weg von malloc()!


    Hast recht, hab ich heute Früh auch mal versucht.

    Ich werde dann mal auf diese Idee zurückgreifen:
    darkpandemic schrieb: Wenn Du genau weisst, wieviele Resourcen Du temporär brauchst, dann kannst Du sie am Anfang z.B. mit
    FooClass arr[32];

    anlegen. Und immer, wenn Du weist, dass gerade keine temporären Resourcen benötigt werden kannst Du das Array resetten, d.h. in einen Default-Zustand zurückversetzen. Das bringt einen Haufen Performance, da new (und auch malloc()) sehr aufwändige Operationen sind.


    bzw. auf ein Array mit Zeigern, die nur auf temporär benötigte Objekte zeigen.

    reimann schrieb:
    Eine Destruktormethode aufzurufen ohne den Speicher freizugeben hat auch wenig Sinn. Dafür wäre nicht eine destroy(), sondern eine reset() Methode sehr praktisch, weil eine Wiederverwendung der einzige Sinn ist, warum man es nicht einfach löschen sollte.
    Außerdem betreffen Destruktoren nicht nur delete, sondern auch das Ende des Gültigkeitsbereiches, wenn du mit dem Stack arbeitest. Das sollte man dabei beachten.


    Reset wäre in meinem Fall nicht wirklich sinnvoll, da ich ja hauptsächlich Objekte habe, die nur einmal verwendet werden.
  • in: Allokierten Speicher über Zeiger initialisieren

    geschrieben von primenic

    Danke für den Hinweis... werd mal sehen, was ich draus machen kann :biggrin:

    darkpandemic schrieb:
    Allerdings muss man wohl aufpassen, wenn die Objekte nicht flach sind, d.h. wenn im Konstruktor oder an anderer stelle innerhalb des Objekte nochmal Speicher angelegt wird weil mir jetzt beim besten willen nichts dazu einfällt, wie ich den Destrukor auf solche Objekte anwenden kann.


    Edit 1:
    Anstatt eines Destruktors könnte man auch eine Art Destroy Funtion implementieren, die evtl. Aufräumarbeiten macht.

    Edit 2:
    Kann man nicht einfach
    FooClass* pPtr = (FooClass*)malloc(sizeof(FooClass));
    *pPtr = FooClass();
    
    //und für den Destruktor
    delete pPtr;

    ?

    So weit ich weiß, wird der Destruktor automatisch aufgerufen, wenn man ein delete auf den Zeiger anwendet.
    Würde nurnoch die Frage bleiben, ob auch Folgendes geht und der "richtige" Destruktor aufgerufen wird.

    void *pPtr = malloc(sizeof(FooClass));
    *pPtr = FooClass();
    
    delete pPtr;

    Es handelt sich ja nicht explizit um einen FooClass Zeiger.
  • in: Allokierten Speicher über Zeiger initialisieren

    geschrieben von primenic

    darkpandemic schrieb:
    Mir scheint, dass Du eigentlich einen Garbage Collector willst, oder?


    Im Prinzip ja.

    darkpandemic schrieb:
    Da stellt sich die Frage, woran man erkennt, ob eine Resource noch benötigt wird oder ob sie frei gegeben werden kann.


    Hatte mir so gedacht der Funktion des Managers, die dann den Speicher allokiert, eine Art "Lifetime" Parameter zu übergeben. (z.B. "bis zum nächsten Tick" denn meistens sind es ja temporäre Ressourcen, die mal hier, mal da nicht wieder gelöscht werden)

    Aber die Idee die Objekte mit new anzulegen und dann in einem Array zu speichern garnicht schlecht :wink: - glaub dann werd ich das eher so machen. - Danke für den Tipp :thumb:
  • in: Allokierten Speicher über Zeiger initialisieren

    geschrieben von primenic

    Die Überlegung war, einen Speichermanager zu schreiben. Da ich mit Direct3D hantiere und dann schonmal Arrays oder andere Ressourcen unter den Tisch fallen, die mit new angelegt wurden. Wenn ich mit einem Speichermanager allokiere und dann die Zeiger auf den allokierten Speicher in einem Array speichere, könnte ich beim beenden des Programms (oder auch währen der Laufzeit) die Ressourcen, die "unter den Tisch gefallen" sind, freigeben.

    PS:
    *pPtr = FooClass();

    Machte bei den Versuchen keine Probleme, weder compiler- noch laufzeitseitig.
  • in: Allokierten Speicher über Zeiger initialisieren

    geschrieben von primenic

    Hallo,

    es gibt ja die Möglichkeit einen Zeiger mit dem "new"-Schlüsselwort zu initialisieren.
    Wenn ich aber Speicher über malloc allokiere, dann kann ich ja keinen Konstruktor aufrufen, wie es mit "new" der Fall ist.

    FooClass* pPtr = (FooClass*)malloc(sizeof(FooClass));

    so erhalte ich einen Zeiger auf den neu allokierten Speicher.

    Nun meine Frage:
    Wenn ich nun Folgendes mache

    *pPtr = FooClass();


    um den Konstruktor der Klasse FooClass aufzurufen, wird dann nocheinmal ein neuer Speicherbereich allokiert oder wird an das "Zeigerziel" von pPtr eine Instanz der FooClass-klasse gelegt.

    Hoffe ihr wisst, was ich meine? ^^
  • in: Probleme beim Senden von mehreren Datenpaketen über Winsocks

    geschrieben von primenic

    darkpandemic schrieb:
    Allerdings musst Du bei Deiner Empfangsfunktion aufpassen:
    1.)
    Du hast buffer nicht als 'static' deklariert, d.h. nach verlassen der Funktion ist der Zeiger auf buffer ungültig, was zu einer Speicherzugriffsverletzung führen kann.
    2.)
    recv() gibt die Anzahl der empfangenen Bytes zurück und nicht notwendigerweise die Anzahl der nach buffer kopierten Bytes.
    D.h. wenn weniger als 256 Bytes empfangen wurden, dann entspricht der Rückgabewert der Anzahl der kopierten Bytes.
    Wenn aber 256 Bytes oder mehr empfangen wurden, dann werden 256 Bytes nach buffer kopiert und aus dem Empfangspuffer gelöscht. Der Rückgabewert von recv() ist in diesem Fall aber größer oder gleich 256.
    Daher wird dann
    buffer[result] = '\0';

    eine Speicherzugriffsverletzung auslösen oder zumindest deinen Stack unvorhersehbar verändern, weil 'result' dann 256 oder größer ist während buffer[255] die letzte gültige Adresse ist.


    Stimmt! Darüber habe ich mir noch gar keine Gedanken gemacht :lol:

    darkpandemic schrieb:
    Um solche Sachen zu vermeiden kann man vor den eigentlichen Daten immer erst die Größe der Daten versenden:
    send(connectedSocket, &bytesToSend, sizeof(int), 0)

    Beim Lesen dann entsprechend umgekehrt (und Byteorder beachten).
    So kann man dann die einzelnen Pakete wieder auseinanderhalten.
    Wenn man die Sache noch sicherer machen will, dann sendet man noch ein paar Steuercodes mit z.B. 'DATA_START' vor den Nutzaten und 'DATA_END' nach den Nutzdaten.


    Ja an sowas hab ich auch schon gedacht, aber da ich bei dem ersten Versuch anscheinend vergessen hatte, die Größe des nachfolgenden Datenpakets auszulesen, kam da auch nur Müll raus :holy:.
    Aber danke, dass du mich nochmal auf diese Idee gebracht hast. Habs jetzt so gelöst:

    struct NET_DATA {
      DWORD length;
      DWORD type;
    }


    Beim senden sende ich halt einfach erst eine gefüllte NET_DATA Struktur und lese halt beim Empfangen erst die Struktur und dann das Datenpaket ein.
  • in: Probleme beim Senden von mehreren Datenpaketen über Winsocks

    geschrieben von primenic

    sektor schrieb: Also bei Netzwerkprogrammen wäre vielleicht noch interessant zu wissen, welches Protokoll du verwendest.
    Ansonsten kannst du mal mit einem Programm wie Wireshark schauen, was denn tatsächlich übers Netz geht, um zu sehen ob nicht gesendet oder nicht emfpangen wird.


    Also Protokoll ist TCP. Die Datenpakete werden gesendet und kommen bei der Gegenstelle auch an.


    xilebo schrieb: Kann es sein, dass du den Buffer nach dem Senden/Empfangen leeren musst?
    (Nur so 'ne Idee, ohne mich jetzt näher damit befasst zu haben...)


    Beim Empfangen werden die Daten, die empfangen werden, ja aus dem Empfangsbuffer schon herausgenommen. - Liegt da vielleicht das Problem?: Wenn ich statisch immer 256 bytes in das char Array einlesen kann es doch auch sein, dass ich "zu viele" Bytes (d.h. auch schon welche vom nachfolgenden Datenpaket) einlese - oder?
  • in: Probleme beim Senden von mehreren Datenpaketen über Winsocks

    geschrieben von primenic

    Hallo,
    ich schreibe momentan ein Programm, welches einige hundert mal pro Sekunde Datenpakete an einen Server sendet. Das Problem dabei ist, dass beim senden von mehr als zwei Datenpaketen (z.B. zwei Strings) nur das erste Paket ankommt. Hier ein Beispiel:
    // Client:
    int SendAVORunning()
    {
    	char buffer[256];
    	strcpy(buffer, "AVO running!");
    
    	int bytesToSend = strlen("AVO running");
    	if(send(connectedSocket, buffer, bytesToSend, 0) != bytesToSend)
    		return -1;
    	return 0;
    }
    void main()
    {
       //...WSASetup; Socket initialisieren;Verbindung aufbauen -> geht alles
       SendAVORunning();
       SendAVORunning();
    }

    // Server:
    char* RecvAVOStatus()
    {
    	char buffer[256];
    	int result = recv(connectedSocket, buffer, 256, 0);
    	buffer[result] = '\0';
    
    	return buffer;
    }
    
    void main()
    {
        //...WSASetup; Socket initialisieren;listen und accept -> geht alles
        RecvAVOStatus();
        RecvAVOStatus();
    }


    ...diese Kommunikation ergibt zwar keinen Sinn, soll aber nur das Problem verdeutlichen.
    Die erste "AVO running" Nachricht kommt an, die zweite nicht. Ich bin etwas verzweifelt, da ich schon einige Tage versucht habe das Problem zu lösen - leider ohne Erfolg.

    PS: Ich verwende als Include WinSock2.h (+ ws2_32.lib) und gebe bei WSAStartup() Version 2.0 an.
  • in: AntMe - dll-Dateien - C#

    geschrieben von primenic

    DLL Dateien sind kompilierte (dynamische) Klassenbibliotheken. Kompilierte Dateien kann man nicht einfach öffnen und bearbeiten (naja im Prinzip schon, nur würde das nichts bringen ;) ).

    Soweit ich mich erinnern kann, gibt es den Sourcecode auf der AntMe Homepage als Download.
    Wie weit dieser Sourcecode in die Eingeweide des Programms geht weiß ich nicht.
    Versuchs mal hier: http://antme.net/

    Ich weiß zwar nicht wie viel C# du schon "kannst", aber ich würde dir nicht empfehlen dich mit dem Simulationshost/-client auseinander zu setzten. Da die Grafik, so weit ich mich erinnern kann, über Managed DirectX ausgegeben wird und das wieder ein Thema für sich ist und dich evtl. verwirren könnte.
  • in: Fehler beim Anmelden an Samba-Domain

    geschrieben von primenic

    Hallo,

    ich habe vor einer Woche einen neuen openSUSE Server aufgesetzt. So weit funktionniert alles (Apache, MySql, usw.) nur der Sambaserver macht nicht das was ich will ;)

    Wir haben 5 Windows 7 Pro Computer und halt einen openSUSE Server im Netzwerk. Ich wollte nun den Samba Server so einrichten, dass ich, egal von welchem Rechner man sich anmeldet, immer meine Benutzerdaten da sind. Ich verwende den Sambaserver, der bei openSUSE 11.3 dabei ist. Die Konfiguration ist dahingehend angepasst, dass ich die Netzwerkfreigaben des Linuxrechners im Netzwerk finde. Wenn ich nun aber versuche, mit einem Win7 Rechner der Domäne beizutreten (also nochnicht mal beim Windowslogon, sondern schon in der Systemsteuerung bei "Änderung des Computernamens bzw. der Domäne") kommt immer die Fehlermeldung:

    Bei dem Versuch der Domäne "HOME-NET" beizutreten, trat folgender Fehler auf:
    
    
    Die angegebene Domäne ist nicht vorhanden, oder es konnte keine Verbindung hergestellt werden.


    Hier die smb.conf

    # Samba config file created using SWAT
    # from UNKNOWN (127.0.0.1)
    
    [global]
    	workgroup = HOME-NET
    	interfaces = 192.168.2.102/255.255.255.0
    	map to guest = Bad User
    	printcap name = cups
    	add machine script = /usr/sbin/useradd  -c Machine -d /var/lib/nobody  -s /bin/false %m$
    	logon path = \\%L\profiles\.msprofile
    	logon drive = P:
    	logon home = \\%L\%U\.9xprofile
    	domain logons = Yes
    	os level = 33
    	preferred master = Yes
    	domain master = Yes
    	local master = Yes
    	security = user
    	wins support = Yes
    	usershare allow guests = Yes
    	hosts allow = 192.168.2.
    	cups options = raw
    	passdb backend = smbpasswd
    	usershare max shares = 100
    	include = /etc/samba/dhcp.conf
    
    [homes]
    	comment = Home Directories
    	valid users = %S, %D%w%S
    	read only = No
    	inherit acls = Yes
    	browseable = No
    
    [profiles]
    	comment = Network Profiles Service
    	path = %H
    	read only = No
    	create mask = 0600
    	directory mask = 0700
    	store dos attributes = Yes
    
    [users]
    	comment = All users
    	path = /home
    	read only = No
    	inherit acls = Yes
    	veto files = /aquota.user/groups/shares/
    
    [groups]
    	comment = All groups
    	path = /home/groups
    	read only = No
    	inherit acls = Yes
    
    [printers]
    	comment = All Printers
    	path = /var/tmp
    	create mask = 0600
    	printable = Yes
    	browseable = No
    
    [print$]
    	comment = Printer Drivers
    	path = /var/lib/samba/drivers
    	write list = @ntadmin, root
    	force group = ntadmin
    	create mask = 0664
    	directory mask = 0775
    
    [serverbase]
    	path = /srv/pub/base
    	read only = No
    	inherit acls = Yes
    	guest ok = Yes
    
    [netlogon]
    	comment = Network Logon Service
    	path = /var/lib/samba/netlogon
    	write list = root
    	read only = Yes

    (Netzwerk IP des Linuxservers ist 192.168.2.102; die Windowsrechner gehen ab 192.168.2.103 los)

    Habe ich in der Konfiguration irgentwas vergessen/falsch gemacht, hoffe ihr könnt mir helfen :biggrin:


    [Update]
    Mittlerweile habe ich es hinbekommen der Domäne beizutreten und mich anzumelden. Allerding erhalte ich nach der anmeldung einige Warnungen von Windows:

    Das Profil ist nicht mit dem Server syncronisiert. [...] Das Benutzerprofil ist nicht aktuell. [...] Eine langsame Netzwerkverbundung wurde erkannt. [...]


    Ist das normal oder muss ich mir sorgen machen, dass nicht alle Dateien die ich anlege und ändere gespeichert werden?!
  • in: Border um Inline-UL mit Zeilenumbruch

    geschrieben von primenic

    Hmm.
    Ich weiß nicht obs an mir liegt, aber ich hab jetzt display:inline rausgenommen und overflow:hidden; hinzugefügt.
    Aber jetzt wird nur die letzte "Zeile" angezeigt: http://primenic.lima-city.de/error_e3.png

    Das kann doch nicht so schwer sein :rolleyes:

    PS: Ich habs auch mit den aktuellen Versionen von Firefox/Safari/Opera/MS-IE/G-Chrome versucht. Bei allen ein gleiches/ähnliches Problem.


    EDIT: Ah sorry, glaub ich hab was flasch gemacht :lol:
    Werds jetzt nochmal "richtig" versuchen, dann meld ich mich nochmal.

    EDIT2: Ja hab vorher vergessen, die height-Eigenschaft von "#nav_detail" rauszunehmen. Jetzt gehts. Danke für die Hilfe. :biggrin:
  • in: Border um Inline-UL mit Zeilenumbruch

    geschrieben von primenic

    So habe ich doch aber den Rahmen um die einzelnen Links und nicht um die ganze Liste? :lol:

    Also ich habe momentan folgendes in der HTML-Datei stehen:

    <div id="nav_detail">
    	{DETAILMENU}
    </div>

    ({DETAILMENU} wird mit einer automatisch generierten <ul> ersetzt.)

    und in der CSS das:

    #nav_detail {
    	background: #858F9E;
        margin: 0; 
        padding: 0;
        height: 2.2em;
    	border: 5px solid #ee0000;
    }
    #nav_detail ul {
    	padding:0px;
    	background: #858F9E;
    	/*display: inline;*/
    	display: block;
    }
    #nav_detail li {
    	list-style-type: none;
    	line-height: 20px;
    	padding: 0;
    }
    #nav_detail li a {
    	color: #ddd;
    	font-weight: bold;
    	text-decoration: none;
    	border-right: 4px solid #eee;
    	border-bottom: 4px solid #eee;
    	padding: 3px 8px;
    	float: left;
    	/*display: block;*/
    	background-color: #858F9E;
    }


    Und als Ergebnis kommt das raus: http://primenic.lima-city.de/error_e2.png
  • in: Index ?

    geschrieben von primenic

    Ich glaube, menticorte mein, dass die index-Datei in einem Verzeichnis auf dem Webspace angelegt werden soll.

    Nun zu meinem eigentlichen Vorschlag oder mehr eine Frage:
    Warum genau soll die Verzeichnisstruktur mit den Pages auf dem Downloadserver liegen??? Du kannst doch einfach auf dem Webspaceserver deine Homepage erstellen (mit einer beliebigen Verzeichnisstruktur) und dann für den Download einen LINK ZUR DATEI AUF DEM DOWNLOADSERVER.

    Also so, wie menticorte schon gesagt hat:

    <a href="path/to/file">Download Dateiname.endung</a>


    oder wenn du nicht willst, dass der Browser dann die "Datei als Seite" öffnet, dann setzt halt das Ankertarget auf "_blank".

    PS: Ich bilde mir ein, dass es von dir auch schon einen ähnlichen Forumsthread vor ein paar Tagen gab.
    PPS: Ich hoffe ich konnte dir Helfen, aber ich verstehe nicht so richtig was du uns mit


    Weiß jemand wie ich bei meinem download Server das so hinbekommen das es in etwas so aussieht :
    http://www.quadeye.com.au/cstrike/maps/
    http://www.uni-oldenburg.de/hilfe/


    sagen willst? Soll jetzt die Homepageseite ohne *.lima-city.* angezeigt werden? -- Dann muss du dir ne Domain kaufen/ersteigern. Oder sollen die Dateien so abgelegt werden? -- Dann kannst du die Verzeichnisstruktur auf dem Downloadserver via TP erzeugen. Willst du vielleicht, dass die Homepagedateien auf dem Downloadserver liegen und von dort aus angezeigt werden sollen? -- das geht nicht, siehe Post von virtual2.
    Also es wäre schön wenn du mir das "Problem" mal genauer beschreiben könntest.

    PPS: Willst du, dass die Dateien im Verzeichnis aufgelistet werden, wenn du http://domain.sd.tld/verzeichnis/ in den Browser eingibst?
    Dann würde ich es mal mit PHP versuchen. Bin mir nicht ganz sicher, ob es funktioniert, aber es gibt da ne Funktion, die alle Dateien in einem Verzeichnis auflistet. Ob das auch bei externen Servern geht, weiß ich nicht.
  • in: Border um Inline-UL mit Zeilenumbruch

    geschrieben von primenic

    Hallo,

    ich habe auf meiner Homepage ein Navigationsmenü mit einer UL verwirklicht. Nun wollte ich, dass die Aufzählungselemente der Liste in einer Reihe angezeigt werden. (CSS-> display: inline;...) So weit ist alles i.o. Wenn ich aber so viele Menüpunkte habe, dass ein automatischer Zeilenumbruch eingefügt wird, dann kann ich mit der CSS-Border Eigenschaft keinen Rahmen mehr um die gesamte Liste machen(, sondern nur um die erste Zeile).

    Gibt es eine Möglichkeit die Elemente einer UL in einer Reihe anzuzeigen und dabei die UL (vollständig) zu umranden?

    PS: Wenn von UL die rede ist, ist natürlich das HTML-Tag <ul> gemeint :lol:
  • in: Counter Strike----FastDownload ???

    geschrieben von primenic

    Man könnte andere Freehoster dazu missbrauchen.

    http://bplaced.net
    http://square7.ch (mehr Speicherplatz)

    Und dann für den Download einfach nur einen Link zur Datei.

    Allerdings denke ich, dass Homepagehoster nich gern als Filehoster missbraucht werden wollen...
  • in: [DX11] Multithreaded-Rendering

    geschrieben von primenic


    Was heißt Multithreaded rendering für dich?


    Sorry, hätt ich vielleicht vorher klären sollen :rolleyes:

    Mit Multithreaded rendering meine ich, dass (unter DirectX z.B.) zwei oder mehr Threads in einen Backbuffer rendern. Ich habe mich noch nicht viel damit auseinandergesetzt, da ich grad noch ein paar andere Sachen zu tun habe, aber ich habe mir das vom Ablauf her etwa so vorgestellt:

    ------
    Physikupdate
    (andere Updates)
    ...
    Hauptthread erstellt Liste der Objekte, die gerendert werden müssen
    2. Thread wird Signal zum rendern gegeben
    Haupt + 2. Thread arbeiten Renderliste ab
    ------

    Ich hatte vor die Renderliste als eine Stack zu implementieren.



    Ich persönlich würde es abhängig machen von der Anzahl der CPUs.

    An diesen Ansatz habe ich auch schon gedacht, allerdings wird das Programm dann wirklich sehr komplex.

    In der MSDN steht, dass GetSystemInfo eine SYSTEM_INFO Struktur ausspuckt und ich dann die Anzahlt der logischen Prozessoren abfragen kann.
    Allerdings ist mir jetzt nich ganz klar was mit den logischen Prozessoren gemeint ist. Sind damit die phys. Prozessoren + evtl. Hyperthred(oder wie auch immer der Müll von Intel heißt, der 2 Kerne in einem vortäuscht) oder sind mit logischen "nur" die Kerne gemeint die auch wirklich vorhanden sind? - Und sind dann mit den phys. Prozessoren die Prozessoren "echter" (also 2 CPUs und nicht 1 CPU und 2 Kernen) Mehr-Prozessorsysteme gemeint? :confused:


    Ich denke, dass wir die 2 bereits vorhandenen Threads (Main und Sound) unabhänig von den Prozessorkernen ausführen werden und einen zweiten Renderthread nur starten, wenn es die Systemresource noch zulassen.
    Man kann doch voraussetzten, dass ein Großteil der PC Nutzer heute min. einen Dualcore Prozessor hat?
  • in: OpenGL verbraucht viel Leistung?!

    geschrieben von primenic

    VBO sagt mir jetzt zwar nix, aber ich versuch mal dir zu helfen :biggrin:
    Wenn ich 3D Applikationen (allerdings DirectX) schreibe, dann steckt die Renderlogik immer in einem Renderloop (wie das OpenGL regelt, weiß ich leider nicht). Es ist sinnvoll da eine kleine Pause (bei Spielen 1-5ms, wenn die Performance nicht so wichtig ist dann auch mehr) einzubauen. So sollte zumindest die CPU-Auslastung sinken.

    Was mit der GPU ist kann ich ohne Code und/oder dem Typ deiner Grafikkarte/-chip nicht sagen.
    Vielleicht solltest du auch mal über folgende Fragen nachdenken:
    - Wird die benutzte OpenGL Version von der Hardware unterstützt?
    - Wird wegen fehlender Hardwareunterstützung vielleicht ein Softwarebeschleuniger eingesetzt.
    - Habe ich den aktuellen Grafikkartentreiber installiert.
    - oder ist vielleicht Hardware im A....

    Hoffe konnte dir ein bisschen helfen :wink:. Aber wie gesagt, mit Code und Grafikkartentyp ginge es besser.

    PS: Eine PU (Processing Unit) kann kein Schleifgeräusch verursachen... es sind ja nur Transistoren (oder waren es Kondensatoren?^^) drauf. Hast du schonmal an einen defekten Lüfter gedacht? Auch ein optisches Laufwerk kann Schleifgeräusche verursachen.
  • in: Modelle aus Blender importieren?

    geschrieben von primenic

    Ich programmiere zwar mit DirectX, aber ich könnte mir vorstellen, dass es an Indices zum zeichnen fehlt. (Oder hast du die Koordinaten schon so im Array, wie du sich zeichnen möchtest?)

    PS: Hast du hier: http://wiki.delphigl.com/index.php/glBegin schonmal geguckt?
  • in: PHP-Datei einbinden ohne Header zu senden

    geschrieben von primenic

    Ja jetzt gehts, vielen Dank :biggrin:
  • in: PHP-Datei einbinden ohne Header zu senden

    geschrieben von primenic

    djfun schrieb:
    ich vermute, dass du in einer Datei die du includest, schon eine Ausgabe hast. Vielleicht auch nur unbeabsichtigt mit einer Leerzeile nach ?> bzw. vor <?php


    Ah ja, ich hatte nen Zeilenumbruch vor <?php, aber das Problem ist immernoch nicht behoben. Ich habe noch ein Kommentag (<!-- -->) vor dem <?php ... kanns auch daran liegen?
  • in: PHP-Datei einbinden ohne Header zu senden

    geschrieben von primenic

    Hallo,
    ich habe ein Problem mit meiner Homepage...
    Ich habe einige php-Klassen inanderen dateien definiert. Wenn ich jetzt diese Klassen verwenden möchte, dann kann ich ja z.B. über

    include("path/to/file");

    oder
    require_once("path/to/file");


    die Datei mit der Klasse einbinden. Wenn ich dann allerdings nach dem Einbinden versuche Headerinformationen zu senden (z.B. so:
    header('HTTP/1.1 404 Not Found');
    )
    Dann wid mir immer einen PHP-Warnung angezeigt, dass die Headerinformationen schon gesendet sind.

    Jetzt meine Frage:
    Kann man eine andere PHP-Datei einbinden ohne die Headerinformationen zu senden oder liegt das Problem vllt. bei mir?! ^^

    PS: Nutze PHP 5.3.1
  • in: [DX11] Multithreaded-Rendering

    geschrieben von primenic

    Hallo,
    ich programmiere mit einigen Freunden schon eine ganze Wile an einem DirectX 11 Spiel. Wir stehen jetzt vor der Entscheidung, ob wir, wie viele andere, nur einen oder ob wir zwei oder mehr Threads rendern lassen. (Dank DX11 ist das ja jetzt fast Problemlos möglich.)

    Bevor wir uns "falsch" entscheiden, wollte ich erstmal hier in der Runde fragen, was ihr von Multithreaded-Rendering haltet und welche Vor- und Nachteile ihr darin seht.

  • in: MB-Wechsel - Neuinstallaton der Betriebssysteme nötig?

    geschrieben von primenic

    Also, der PC kommt hauptsächlich in den Bereichen (Multi-Threaded) 3D Rendering (Blender, 3DS Max, Maya), Videoberechnung/-bearbeitung und Game-Development zum Einsatz. Ich denke, dass ein Quad-Core eine gute Entscheidung für die Zukunft ist.

    Was das Thema Intel vs. AMD betrifft. Habe ich bisher auf Intel gesetzt, allerdings sind die Peise für die Quad-Core Prozessoren bei Intel ja fast höher als die Preise für nen Hexa-Core bei AMD.
    Da ich 'damals' schon die 64-Bit Versionen von Windows gekauft hatte (momentan sind aber die beiliegenden 32er Versionen installiert) würde ich jetzt auch gerne die 64-Bit Versionen nutzen.

    Ach ja und was den RAM angeht, ich hab noch 6GB @ 1066MHz DDR3 rumliegen (das sollte doch reichen?).
  • in: MB-Wechsel - Neuinstallaton der Betriebssysteme nötig?

    geschrieben von primenic

    Mhh, ich mag keine Experimente, ich mach am besten ein Abbild der Daten von den Platten und installier dann Windows neu (kann ich ja gleich die HDD's aufräumen :lol:).

    EDIT:
    Aber mal ne andere Frage, da ich ja in meinem alten PC noch einen Intel Pentium 4 verbaut habe und noch kein neues MB gakauft habe, habe ich ja jetzt die Wahl zw. Intel und AMD (also für den Prozessor). Was kann man kaufen und von was sollte man lieber die Finger lassen... hab mir schonmal 2 (für mich) interessante Prozessoren angesehen:

    Intel Core i7-930 und den AMD Phenom II X4 955 BE. Habt ihr villeicht eigene Erfahrungen mit einem der beiden?
  • in: MB-Wechsel - Neuinstallaton der Betriebssysteme nötig?

    geschrieben von primenic

    Hm.. :frown:. na ok danke. Ist zwar nicht die Antwort, die ich mir erhofft, aber ein neuer Prozessor muss her ;-)
  • in: MB-Wechsel - Neuinstallaton der Betriebssysteme nötig?

    geschrieben von primenic

    Hallo,
    ich möchte meinem Desktop-PC ein neues MB gönnen (vor allem, damit ich einen i7 Prozessor einbauen kann). Bevor ich mir jetzt aber ein neues MB kaufe, wollte ich ertmal fragen, was es zu beachten gilt (außer Forfaktor, CPU-Sockel, etc.).

    Ich habe Windows Vista/7 und Linux Debian/Ubuntu auf 3 Festplatten(für Windows je eine und für Linux eine mit 2 Partitionen). Meine Frage ist nun, ob ich die Betriebssysteme neu installieren muss (wegen evtl. Teiberkonflikte, usw.)
  • in: Problem mit WNDCLASSEX.lpszClassName

    geschrieben von primenic

    Ja stimmt, das "L" vor der Zeichenkette. - Danke so gehts :biggrin:

    Oh man... da hätte ich auch selbst drauf kommen können. :rolleyes:
  • in: Problem mit WNDCLASSEX.lpszClassName

    geschrieben von primenic

    Hallo,
    ich wollte grade ein kleines Win32 Programm schreiben...

    Aber hier

    WNDCLASSEX        WindowClass;                // Die Fensterklasse
    // [...]
    WindowClass.lpszClassName    = "TriExtDBG_MCLASS";


    und hier

    hWindow = CreateWindow(WindowClass.lpszClassName,
                                   "TriExt - DBG",
                                   WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                                   50, 50,
                                   250, 180,
                                   NULL,
                                   NULL,
                                   hInstance,
                                   NULL);

    naja eigentlich überall, wo ich versuche einen LP(C)WSTR ohne expl. cast zuzuweisen spuckt mein Compiler diese Fehlermeldung aus
    error C2440: '=': 'const char [31]' kann nicht in 'LPCWSTR' konvertiert werden

    (Die Größe des 'const char'-Arrays variiert natürlich von Fehler zu Fehler)

    Es kann sein, dass bei mir grad voll einer aufm Schlauch steht, aber ich bilde mir ein, dass das immer problemlos funktioniert hat.

    Hat jemand eine Idee? :confused:
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    em4servertreff schrieb:
    Wie wäre es wenn wir das ganze ganz einfach machen. Du schreibst die Öffnungen die das Programm machen darf in eine .txt oder .ini. Jedes mal wenn es startet erhöt es dann den wert.
    So das ist schon das grundlegende, jetzt kommen wir zu dem eigentlichem Problem. Du kannst die .txt oder .ini passwort schützen, oder aber du speicherst das ganze in einem verschlüsseltem code, das z.B. die eins = saofdzhodgfhosidfu394836/$§"()(/%(&/7853 ist und die anderen Starts andere Codes, bis die letzte zahl erreicht ist. Dies kannst du auch in der regestrie machen, und nicht in der txt oder ini. Aber ich muss jetzt echt sagen, man kann alles knacken wenn man es will,also würde ich da nicht so viel Arbeit rein stecken.


    Hmm... hast wohl nicht die vorherigen Antworten gelesen?

    Ich hab so ziemlich das Selbe schonmal ein paar Antworten vorher geschrieben... und hatte sogar noch ein Beispiel dabei...

    PS: Wenn du richtig gelesen hättest, dann hättest du auch gesehen, das wir diesen Lösungsansatz schon ausgeschlossen haben.
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    Naja "einfach falsche Datensenden" ist nicht grade leicht. :wink:
    Du musst den Aufbau der Datenpakete kennen, usw.

    Außerdem gibt es ja diverse Verschlüsselungstechniken für solche Verbindungen.
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    Ja solche analyse Programme sind nichtmal illegal - und man muss auch kein Cracker sein. Es gibt Tools, die z.B. bei der Installation mitlaufen um dann alles wieder restlos deistallieren zu können.

    golem235 schrieb: hi Leute

    die einzige Möglichkeit die ich sehe ist dein komplettes Programm auf einem Server laufen zu lassen und dem Benutzer nur noch die GUI gibst/anzeigst ->folgt nur das nächste Problem: wie verhindert man das einfache Neuanmelden unter neuem Namen?



    Man muss nicht das gesamte Programm auf einem Server laufen lassen. Man könnte es so wie EA machen. Jeder Computer hat bestimmte unverwechselbare Merkmale (z.B. die Seriennummer des MB) man könnte diese auf einem Server mit den Daten (verbleibende Starts, Tage, etc.) des Programms assoziieren. Die Kombination der Seriennummern, der Systemkomponenten, etc. sollte einmalig sein. Wenn jetzt ein User versucht sich mit anderem Namen erneut anzumelden, dann kann man im Server gucken, ob diese Systemkonfiguration schon vorhanden ist.
    - Allerdings sehe ich ein Problem darin, wenn man Systemkomponenten ändert...

    PS: Mit Hashcodes sollte man vorsichtig sein, wenn man nun z.B. einen MD5 erstellt (was weiter oben schon vorgeschlagen wurde), dann kann man den MD5 nichtmehr in den Klartext zurückführen.
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    Ja, das Problem, dass die Kontrolldateien dem User zugänglich sind, ist mir klar, aber wenn man das ganze nicht online machen will, dann kann man nur Dateien oder (besser) Reg.-einträge nutzen.

    Wenn man die Kontrolldatei in einem versteckten Verzeichnis auf der Festplatte speichert? - Kann mir nicht vorstellen, dass sich ein User die Mühe macht und die Datei sucht.

    PS: Wenn du (wer auch immer das Thema angefangen hat :rolleyes: ) wiklich nicht online arbeiten willst und dir das Risiko bei Kontrolldateien zu groß ist, dann musst du wohl eine unbegrenzte Version mit eingeschräkten Features ("bedingte Kompilierung") erstellen oder das Programm beim Start prüfen lassen, ob es registriert ist. (Registrierungsschlüssel in Registrierung schreiben).


    EDIT:

    Mir ist grad noch ne Idee gekommen. Die ist vielleicht nicht ganz elegant, aber... naja hörts euch einfach mal an:

    Es gibt im Bitmapdateiformat einen unbenutzten Wert im Dateiheader. (Byteoffset 6) da könnte man die verbleibenden Starts reinschreiben. Dann ist der Wert auf jedenfall vor dem User versteckt. Wenn man das jetzt noch z.B. in eine Icon-Bitmap schreibt... da würde ich sowas nicht vermuten... - ihr?
    (Ich hab noch ein weiteres mögliches Format gefunden: wav bzw. Wave)

    EDT2:

    vampiresilence schrieb:
    Dann müsste man zwar das Datum jeden Tag zurückstellen, aber das wird denke ich mal eine zunehmende Unannehmlichkeit für den Benutzer, den er irgendwann unterlassen wird. Prinzipiell kann man also nur darauf bauen, dass die Maßnahmen die zum Brechen des Schutzes erforderlich wären, für den Anwender besonders nervig sind.


    Wenn man das Programm in einer VM startet, kann man das Problem umgehen (dann kann man eigentlich jeden Schutz vergessen).
  • in: Notebook im Wachkoma?

    geschrieben von primenic

    aklasse schrieb:
    Wenn das BIOS vollständig kaputt ist, bekommst du keine Fehlermeldung mehr. Dann geht nähmlich NICHTS mehr. Aber da die Lüfter laufen ist das vermutlich nicht der Fehler.


    Dass die Lüfter anlaufen muss nicht heißen, bei einigen Laptops klemmen die Lüfter direkt an der Stromversorgung, d.h., wenn der "Ein-Knopf" gedrückt wird laufen diese automatisch an.

    Ich könnte mir auch eine kaputte Grafikkarte oder einen Biosfehler vorstellen. Wenn es nur ein Biosfehler ist, kannst du mal gucken ob du die Batterie vom Bios findest. Die dann mal raus und wieder rein machen. (geht jedenfalls bei Desktop PCs)
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    Um was für ein Programm geht es dabei?

    Wenn es Dateien speichert, könnte man diesen im Dateiheader eine Information, dass sie mit einer Testversion erstellt wurden, hinzufügen. Außerdem ist ein Zeitstempel sinnvoll. Wenn man dann halt mit einer "neuen" Testversion versucht die Datei der "alten, abgelaufenen" Version zu öffnen, könnte man das blocken.

    Aber für absolute Sicherheit muss man halt einen Teil auf einen Server auslagern (wer hat heute denn keinen Computer, der ständig online ist).
  • in: Tutorial für 3D-Spiele

    geschrieben von primenic


    Nichtsdestotrotz ist das UDK die beste Engine die man kostenlos als Einsteiger bekommen kann und dazu noch im Industrie-Format und Qualität. Und ja, geht um die Free Version.


    Ja das seh ich auch so!


    Man kann btw die AA-Einstellungen anpassen :P. Stichwort PostProcessingVolume.
    [...]
    und es ist sogar möglich C++-Code via DLLBind und TCP/IP auszuführen.


    Oh, das wusst ich nicht :lol: .
    ...Hab nix gesagt :holy:

    visual-basic schrieb: Alles was ich bis jetzt so gehört hab, is es nicht schlecht. Und Grund zum streiten gibt es hier auch nicht.

    PS: Hat jemand eine Ahnung mit welcher Sprache KKrieger geschrieben wurde?


    Ich würd mal sagen C++. Das erscheint mir auf den ersten Blick am wahrsceinlichsten. ("kleine Größe", relativ schnelle Ausführung).
    Da mit dem Spiel keine XNA oder SlimDX DLLs ausgeliefert werden. Kann man C# ausschließen. Java kann ich mir auch nicht vorstellen, da mein Javainterpreter nicht startet.
  • in: Tutorial für 3D-Spiele

    geschrieben von primenic

    scorcher24 schrieb:


    Aber wie gesagt, man kann halt kaum eigene Spielideen verwirklichen. Für Einsteiger ist das UDK aber eine gute Möglichkeit sich mit der Logik von Spiele vertraut zu machen.

    Dem möchte ich widersprechen. Man kann durchaus eigene Ideen verwirklichen. Und *Hust* entschuldige bitte, aber das UDK ist genau das selbe wie das, das Lizenznehmer der U3 Engine bekommen. Nur bekommen die noch den SourceCode dazu um den Editor und die Engine anpassen zu können.
    Allerdings ist über das Scripting und hier meine ich nicht Kismet, sehr viel an eigenen GameModi möglich. Man hat wirklich volle Kontrolle und kann auch Top Down Shooter oder Puzzles entwickeln etc.
    BItte das UDK nicht unterschätzen :).
    Möchte noch drauf hinweisen, dass das UDK nur für kostenlose Spiele auch kostenlos ist. Willst Du Dein Spiel verkaufen musst Du es lizenzieren.
    rya.


    Ja es stimmt schon, dass man mit dem UnrealScript viel Kontrolle hat, aber kann man damit z.B. ein eigenes Dateiformat auslesen, Ntzwerkverbindungen aufbauen, etc.? - Sag mir bitte wenn ich mich irre!
    Wenn ich mir jetzt sicher wär, dass man die AA-Einstellungen nicht anpassen kann würd ichs vielleicht auch noch bemängeln... ^^

    Außerdem sagst du, dass die Lizenznehmer den SourceCode bekommen um die Engine anzupassen..., wenn man nun volle Kontrolle über UnrealScript, Kistmet, usw. hätte, warum sollte man dann die Engine anpassen? :confused:

    Naja, vielleicht habe ich auch ein kleines bisschen übertrieben, aber wirklich die absolute Kontrolle hat man mit der kostenlosen Version nicht.

    Eine Frage noch: Ich bin jetzt immer davon ausgegangen, dass es hier um die Free-Version geht. - Ist doch so oder?
  • in: Erfahrungen mit Microsoft XNA.

    geschrieben von primenic

    Ich kann vampiresilence nur zustimmen.

    Aufgrund des Laufzeitinterpreters für C# ist die Sprache relativ langsam. Für den Einstieg ist XNA sehr gut geeignet. Das einzige Problem, dass ich mit dem XNA hatte, ist, dass es auf DirectX 9 basiert. Das heißt, keine Level 5 Shader, keine Computeshader, etc.
    Ich denke, dass DirectX 9 an Bedeutung verlieren wird. (Das soll jetzt aber nicht heißen, dass es von keinen modernen Spielen unterstützt wird. Einige besitzten eine DX9 und eine DX10/11 Version).
    Ich würde dir empfelen, wenn du dich in die Spieleprogrammierung eingearbeitet hast, auf DirectX 10 (oder 11) umzusteigen.


    EDIT: Oh... da hab ich wohl nicht aufs Datum geguckt :rolleyes:
  • in: Tutorial für 3D-Spiele

    geschrieben von primenic

    visual-basic schrieb:

    PS: Ich hab eine ATI Mobility Radeon HD 5870 -> läuft alles flüssig.


    Glückspilz :thumb:

    Kann dir zum einarbeiten das hier empfehlen: http://udn.epicgames.com/Three/VideoTutorials.html.
    Mein Schulenglisch hat ausgereicht :biggrin:

    Ach ja..., wenn du hilfe brauchst dann kannst mir ja ne PN schicken, arbeite schon seit einer halben Ewigkeit damit. :lol:
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    sektor schrieb: Ok ich will mal etwas theoretischer an das Problem rangehen:
    Ziel ist es irgendwie zu speichern, wie oft ode wie lange ein Nutzer das Programm schon benutzt hat.
    Das Problem ist, dass der Speicherort "feindliches Gebiet" ist.
    Solange ich den Zustand auf dem Rechner des Nutzers speichere gibt es immer die Möglichkeit für ihn,
    dass er alles wieder in den Originalzustand zurückversetzt(zb Ghost-Image).
    Nach Determinismus nach dem der Computer und seine Programme funktionieren bedeutet das, dass
    das Programm es nicht feststellen kann, ob das System zurück gesetzt wurde.
    Damit bietet sich nur die Zuhilfenahme eines vertrauenswürdigen Speichermediums an, sprich ein authentifizierungs Server.
    Letztlich läuft das Problem also darauf hinaus, dass dein Programm verstrickt genug sein muss, um den Authentifizierungspart uncrackbar zu machen und die Authentifizierung, darf nicht von fremden Servern aus vorgenommen werden können.

    Ich hoffe mal, dass das einleuchtend ist und mir kein Denkfehler unterlief.


    Er möchte ja nicht den "EA-Weg" gehen. Er will, dass sein Programm möglichst offline verfügbar ist.

    Ich werde jetzt mal versuchen ein Programm zu schreiben, dass für norml-user nur sehr schwer zu knacken ist.


    SO... das Programm kann zwar in dieser Version noch leicht geknackt werden, aber es soll ja nur ein Beispiel und eine Anregung sein...
    Hier der Code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Windows.Forms;
    using System.IO;
    
    namespace _30_Tage_Testversion
    {
        static class Program
        {
            static FileStream oKontrollFile;
            /// <summary>
            /// Der Haupteinstiegspunkt für die Anwendung.
            /// </summary>
            [STAThread]
            static void Main()
            {
                 //das programm unterstützt nur 3 teststarts...
                const string s3StartsLeft = "LKGDT_3";               //strings sind egal... naja fast^^
                const string s2StartsLeft = "IOSFI__2";              //damit dieses programm richtig funktionniert, 
                const string s1StartsLeft = "PSIFAOUG_1";            //muss ein string länger als der vorherige sein
                const string s0StartsLeft = "IJIIOASOF_";
    
                int iVerbleibendeStarts = -1;
                //installationszeit in erfahrung bringen
                FileInfo oFi = new FileInfo("liesmich.txt");
                DateTime oErstelltAm = oFi.CreationTime;
                //jetzt installationszeit mit erstellungszeit der "kontrolldatei" vergleichen;
                FileInfo oFi_Kontroll = new FileInfo("kontrolldatei.txt");
                DateTime oKontrollErstelltAm = oFi_Kontroll.CreationTime;
    
                if (oErstelltAm.Date != oKontrollErstelltAm.Date)
                {
                    //fehler dateien wurden manipuliert
                }
                else
                {
                    //jetzt noch die zeit (nur minuten) kontrollieren
                    if ((oErstelltAm.TimeOfDay.Hours != oKontrollErstelltAm.TimeOfDay.Hours)
                        || (oErstelltAm.TimeOfDay.Minutes != oKontrollErstelltAm.TimeOfDay.Minutes))
                    {
                        //wieder fehler, manipulation
                    }
                    else
                    {
                        //keine manipulation, jetzt können die verbleibenden tage "berechnet" werden
                        oKontrollFile = new FileStream("kontrolldatei.txt", FileMode.Open);
                        StreamReader oReader = new StreamReader(oKontrollFile);
                        StreamWriter oWriter = new StreamWriter(oKontrollFile);
    
                        string sVerbleibendeStarts = oReader.ReadLine();
                        oKontrollFile.Position = 0;
    
                        //Verbleibende Starts "parsen" und
                        //neue anzahl an verbleibenden starts in die datei schreiben (aber keine neue datei erzeugen(!)
    
                        switch (sVerbleibendeStarts)
                        {
                            case s3StartsLeft:
                                iVerbleibendeStarts = 3 - 1;
                                oWriter.WriteLine(s2StartsLeft);
                                break;
                            case s2StartsLeft:
                                iVerbleibendeStarts = 2 - 1;
                                oWriter.WriteLine(s1StartsLeft);
                                break;
                            case s1StartsLeft:
                                iVerbleibendeStarts = 1 - 1;
                                oWriter.WriteLine(s0StartsLeft);
                                break;
                            case s0StartsLeft:
                                iVerbleibendeStarts = -1; //das programm soll ja nichtmehr starten.
                                break;
                        }
    
                        oWriter.Close();
                        oReader.Close();
                        oKontrollFile.Close();
    
                    }
                }
    
                if (iVerbleibendeStarts != -1)
                {
                    Application.EnableVisualStyles();
                    Application.SetCompatibleTextRenderingDefault(false);
                    Application.Run(new Form1());
                }
            }
        }
    }


    und der Download: http://nicolas.bplaced.net/30_Tage_Testversion.zip

    Natürlich sollte man das, was in die Datei geschrieben wird noch verschlüsseln. Man könnte auch einen (besser 2 oder mehr Einträge, die in unterschiedlichen Regionen stehen) Regeintrag machen und den dann zur Laufzeit laden.
    Die Datei "liesmich.txt" steht für alle "konstanten" Dateien im Anwendungsverzeichnis. Man kann die Erstellungsdaten vergleichen und so Manipulation ausschließen. Außerdem könnte man in einem anderen Verzeichnis (ich benutze gern das Verzeichnis für Anwendungsdateien) auf der Festplatte eine Vergleichsdatei erstellen. Der Name und Pfad dieser Datei sollte natürlich nicht offensichtlich sein...
    Also kurz gesagt: Das Programm hat noch viel Verbesserungspotential

    PS: Ich würde noch mit bedingter Kompilierung Funktionen für die Testversion sperren.

    EDIT:
    man kann auch ein eigenes Dateiformat entwerfen.
    Bsp:
    - Binärformat
    - bestehend aus verschiedenen Datenchuk-Typen
    - Reihenfolge der Datenchunks immer variieren
    - Datenchunks könnten aus Datenchunkheader, der den Typ enthält, und den Daten an sich bestehen

    Als Beispiel wie solche Datenchuks aufgebaut sein könnten kann man z.B. das .wav nennen. (einfach mal nach googlen)
  • in: C#: 30 Tage Testversion

    geschrieben von primenic

    Hab das Thema jetzt nur überflogen un hoffe, dass meine Idee noch nicht gekommen ist^^.

    Also da du das ganze mit C# programmierst kannst du (wenn du von der Zeit unabhänig bleiben willst) die Starts zählen. ...ok so weit nichts neues ;-)

    Aber statt das ganze in die Reg oder in eine Datei (als Text o.ä.) zu schreiben kannst du einfach eine entsprechende Klasse als DLL kompilieren (auch zur laufzeit).

    Hab jetzt keine lust das zu versuchen. Als Stichworte kann ich dir CSharpCodeProvider nennen. Da kann man aus einem String eine DLL kompilieren. Du kannst z.B. eine Klasse (als string) erstellen und dann iht eine public Funktion zum Abrufen der verbleibenden Starts hinzufügen. Dann kannst du von den verbleibenden Starts ein abziehen und dann eine neue DLL erstellen. Um die DLL dynamisch zu Laufzeit zu laden kannst du [DLLImport] (könnte auch ein bisschen anders heißen^^) verwenden. Such in der MSDN oder bei Google einfach mal nach DLLImport und CSharpCodeProvider.


    PS: Hab grad gesehen, dass MD5 empfolen wurde, dass würde ich nicht nehmen, da man das nicht wieder "zurückverschlüseln" kann.

    Eine weitere öglichkeit wäre es im Code einfach für jeden Tag einen Code zu definieren (kann z.B. so aussehen:

    string OneDayLeft = "HJK4458KJ_1";
    string TwoDayLeft = "HEZPD456K_2";
    
    //etc.
    
    //beim beenden die Verbleibenden Tage (den Code in Datei schreiben und beim nächsten Start wieder auslesen und dann "Parsen"
    )

    dann kannst du die verbleibende Zeit als Reintext in eine Datei schreiben (und das ist für normale User nich zu knacken).
    Und bei jeden Programmstart dann aus der Datei auslesen und dann die Verbleibenden Tage damit verbinden. z.B. mit switch-case

    PS: Ich schreib heute Nachmittag mal ein Beispiel und werds auf meiner Homepage zeigen.
  • in: Tutorial für 3D-Spiele

    geschrieben von primenic

    Ja das UDK an sich ist eine schöne Sache. Allerdings hat man mit einem "Fertig-Programm" nicht so viel Flexibilität, als wenn man das Spiel selbst schreibt. Klar, im UDK hat man in Sachen Contentmanagement so ziemlich alles was das Spiele-Programmierer-Herz begehrt. (z.B. Contentbrowser, PhAT, dieser SoundCue Editor, komm jetzt nicht auf den Namen ^^). Nicht zu verschweigen ist auch die Visuelle Scriptsprache (Kismet oder so...), die meiner Meinung nach weit ausgereift ist. Außerdem hat man mit dem UDK "Zugriff" auf die UnrealEngine. Die vor allem in Sachen Rendering gute Ergebnisse erzielt.

    Aber wie gesagt, man kann halt kaum eigene Spielideen verwirklichen. Für Einsteiger ist das UDK aber eine gute Möglichkeit sich mit der Logik von Spiele vertraut zu machen.

    PS: Man braucht viel Zeit und gute Englischkentnisse bis man mit vielen Funktionen des UDK umgehen kann. Außerdem muss ich dazusagen, dass das UDK auf meinem Computer mit einer GeForce 9300M G nicht sehr flüssig läuft.
  • in: Unterstützt Lima-City "memcached" - Cache-Server?

    geschrieben von primenic

    whitepaw schrieb:
    sebulon schrieb:
    ist auch überflüssig finde ich... so viel Leistung braucht deine seite bestimmt nicht, dass es notwendig ist^^

    Vielleicht braucht er selbst die Leistung nicht aber da auf den Servern hier ja immer mehrere Webseiten liegen, würde es diese doch auch beschleunigen wenn dadurch weniger berechnet werden muss weil es schon zwischengespeichert ist oder seh' ich das falsch?


    An sowas in der Art hatte ich auch gedacht...

    sebulon schrieb: wenn der server laufend nen 503er wirft, dann bringt das auch nichts... im gegenteil, es könnte das auftreten des 503er etwas häufiger auftreten lassen...

    und die FTPs sind auch nciht so stabil...

    aber der mist ist erst so, seit der Umzug war... entweder ist in den config-files ne einstellung nciht ganz in Ordnung, oder der Fehler liegt beim Server an sich...


    Das ist ja nicht der Standart. Das Lima-City-Team arbeitet ja daran, dass alles wieder stabil läuft...

    sebulon schrieb: du kannst dir das über PHP selbst bauen... schau dir die phpinfo() an, dann weißt du, obs geht oder nicht...


    aber ich würds dir nicht empfehlen... da der server sowieso grad irgendwelche macken hat, dürften 100000 User ziemlich ärgerlich werden, wenn du mit deinen Spielereien den server vollbrummst... mach es erstmal bei dir zuhause... und wenn deine kiste nicht abschmiert und du nebenbei warcraft 3, Crysis und GTA4 laufen lassen kannst und hin und herswitchen kannst zum zocken, ohne dass deine mühle abschmiert, während ne virtuelle maschine anfragen erzeugt, erst dann solltest du es hier versuchen^^


    Wer lesen kann ist klar im Vorteil... ich hatte weiter oben geschrieben, dass ich persönlich damit nichts vorhatte :nosmile:
    PS: Crysis lagert viele Berechnungen der Update-Schleife auf die GPU aus, damit ist die CPU weniger belastet. Das größte Problem bei modernen Computrspielen ist die geringe rechenlestung der GPU (bzw. der Taktfrequenz) und der geringen leistung der Grafikspeichers. Da viele Computer nicht genug Grafikspeicher besitzten (oder man nicht so viel Grafikspeicher voraussetzten will) lagern viele Spiele eineige Resourcen auf den RAM aus. Außerdem kommen viele Lags (wenn man mehrere Spiele gleichzeitig offen hat) daher, dass manche Spiele sich nicht "schlafen legen" wenn sie im Hintergrund sind, d.h.,dass der gesamte Rendervorgang fortgesetzt wird. Das hat zur Folge, dass die Grafikkarte in mehrere Back-Buffer gleichzeitig rendern muss. Beim wehseln zw. den Spielen muss meist das Device-Objekt (bei DirectX) neu (oder jedenfalls zum Teil) erstellt werden und das braucht Zeit. Zudem muss die Grafikkarte noch zweischen den verschiedenen Back-Buffern wechseln (aber das hatte ich ja schon gesagt ^^).
    Kurz: Spiele nebenbei laufen zu lassen ist mehr oder weniger Blödsinn. Das größte Problem dabei ist die Grafikkarte. ...und der memcarche-Server wird wohl kaum grafische Berechnungen oder Ausgaben machen.
    Ach ja und ich glaub kaum, dass die 3 Spiele zusammen mehr als 8 GB RAM und 2 x 4 x 2GHz CPU Leistung fressen.
  • in: Unterstützt Lima-City "memcached" - Cache-Server?

    geschrieben von primenic

    tauban schrieb: wer diese Leistung braucht, der sollte ein etwas exclusiveres Hosting verwenden (v)Server?
    was genau hast Du den damit vor?


    Vor hatte ich damit (eigentlich noch) nichts, wollte nurmal wissen obs hier sowas gibt.
  • in: Unterstützt Lima-City "memcached" - Cache-Server?

    geschrieben von primenic

    Hallo,
    der Titel ist eigentlich schon allsagend. Ich würde gern wissen, ob auf dem Lima-City Webspace memcached(http://de.wikipedia.org/wiki/Memcached) unterstützt wird.
  • in: char* in wstring konvertieren?

    geschrieben von primenic

    OK danke, ich werds morgen mal versuchen.

    EDIT: Habs doch heute noch versuchen können. :biggrin:
    Also so wie du meinst gings bei mir nicht. Ich musste aus der Zeile

    wchar_t wtest[len+1];


    diese machen

    wchar_t* wstr = new wchar_t[len+1];


    Vom Prinzip her fast das Selbe, aber mit deiner Version meinte der Compiler "[...] error: Konstanter Ausdruck erwartet. [...]".

    Aber danke für die Hilfe :smile:
  • in: char* in wstring konvertieren?

    geschrieben von primenic

    Hallo,

    wie aus dem Titel ersichtlich, möchte ich ein char* in einen wstring konvertieren. Da char* aus Bytes besteht und wstring intern ein Array aus Integern (oder jedenfalls so was in der Art) ist, stellt sich mir jetzt die Frage ob man zwischen den beiden Typen überhaupt konvertieren kann?! Ich hab schon ein bisschen gegoogelt, bin aber nicht so richtig fündig geworden. Gibt es eine Möglichkeit von char* zu wstring zu konvertieren?

    PS: Da die Suche momentan nicht funktioniert oder bei mir jedenfalls keine Ergebnisse ausgeworfen hat, wäre ich auch über einen Link zu einem anderen Beitrag dankbar ;-)
  • in: Fehler bei WordPress Installation

    geschrieben von primenic

    Warning: mkdir() [function.mkdir]:
    File exists in /home/webpages/lima-city/filemanager/html/index.php on line 61


    Ja kann ich bestätigen...

    Wär schön wenn sich da mal einer drum kümmert :biggrin:
  • in: Fehler bei WordPress Installation

    geschrieben von primenic

    Hallo,
    ich wollte einen Blog auf meinem Webspace einrichten und jedes mal, wenn ich die WordPress Installation ausführe... eingenlich noch davor kommt eine Fehlermeldung, welche meint, dass das Script zu lange ausgeführt wurde:

    Fatal error: Maximum execution time of 10 seconds exceeded in /home/webpages/lima-city/filemanager/html/index.php on line 66


    Liegt das Problem beim Server oder vielleicht am Umzug von Denic heute oder liegt das Problem bei mir?!


    PS: Hab kein Forumthema für dieses Problem gefunden - hab aber auch net richtig gesucht ;) - wenn es also schon ein Thema zum Problem gibt, dann weist mich bitte drauf hin.
  • in: Leicht zu erlernende Sprache gesucht.

    geschrieben von primenic

    Also wenn du mit VB schon Probleme hast, würde ich dir - wie schon viele vor mir - eine leichtere (Web-)sprache empfehlen. HTML oder PHP bzw. JavaScript sind leichte Sprachen für den Anfang. Wenn du aber unbedingt mit der Windoofprogrammierung anfangen willst und mit VB Probleme hast, wird es schwierig :wink:
    Als Plattformunabhänige Sprache würd ich dir für den Anfang Python (oder Delphi - mein Lehrer meint es ist leicht(-er), ich bin aber anderer Meinung) empfehlen.

    Python Entwicklungsumgebung würd ich dir die mitgelieferte empfehlen für HTML/PHP/JS kenn ich keinen speziellen, guten - ich nutze NetBeans von Sun.
    Wenn du dich dennoch für VB, C/C++, C# entscheiden soltest, dann sind die kostenlosen Expresseditionen des Visual Studio von MS eine gute Wahl, obwohl sie am Anfang nicht sehr leicht zu bedienen sind.

    PS: Wenn du dich für HTML in Verbindung mit ASP.NET entscheiden solltest, empfehle ich ebenfalls eine Expressedition des Visual Studio.

    PPS: Das Visual Studio nimmt dir sehr viel Programmierarbeit ab... das macht es für manche schwierig, eine Sprache "richtig" zu lernen, aber das musst du selbst beurteilen.
  • in: Rechenfehler in C#

    geschrieben von primenic

    Dann können nicht dieselben Werte drinnen stehen

    Ansonsten ist debugging tatsächlich eine kluge Idee.


    Hab die Wete vom Debugging. Und den "Fehler" hab ich auch gefunden. Ein anderer Thread hat immer kurz vor der Rechnung auf die Variable zugegriffen und den Wert verändert. - Das zeigt mal wieder, dass man nicht ohne lock() Anweisung arbeiten sollte :wink:
  • in: Rechenfehler in C#

    geschrieben von primenic

    Komisch ist nur, dass der selbe Funktionsaufruf in einem anderen Programm (die selben Variablenwerte) ein anderes, richtiges, Ergebnis hervorruft.
  • in: Rechenfehler in C#

    geschrieben von primenic

    Hallo,
    ich möchte den Mittelpunkt eines Rectangle berechnen das sieht bei mir etwa so aus:

    //oDestRect.Location.X ist 460
    //oDestRect.Location.Y ist 219
    //oDestRect.Width ist 369
    //oDestRect.Height ist 88
    new Vector2((float)(oDestRect.Location.X + (oDestRect.Width / 2.0f)), (float)(oDestRect.Location.Y + (oDestRect.Height / 2)))


    Bei der ersten Rechnung kommt 644.5 und bei der zweiten 263. Wenn man nun aber einen Taschenrechner nimmt und nachrechnet kommt was anderes raus :biggrin: (mit dem Taschenrechner das Richtige)

    Hattet ihr schonmal ein ähnliches Problem? - Wie kann man das beheben?

    Danke schonmal
  • in: Visual C# XNA Model wird halb-durchsichtig gerendert

    geschrieben von primenic

    Kenne nur gute Bücher:
    1: XNA Game Studio Express - Spieleprogrammierung für PC und Xbox (2. Auflage, ISBN:978-3-8266-5945-4)
    2: Spieleentwicklung mit dem Microsoft XNA Framework - Einstieg und professioneller Einsatz (ISBN: 978-3-939084-54-9)



    Ok, habs das Problem mit einem Anderen Modell auch. Kanns an der Matrixberechnung liegen? :eek:

    oGameState.o_maProjection = Matrix.CreatePerspectiveFieldOfView(MathHelper.Pi / 4,
                    oDevice.PresentationParameters.BackBufferWidth / oDevice.PresentationParameters.BackBufferHeight,
                    1.0f, 3000.0f);
    oGameState.o_maView = Matrix.CreateLookAt(new Vector3(0, 0, -100), Vector3.Zero, Vector3.Up);
     oGameState.o_maWorld = Matrix.Identity;
  • in: Visual C# XNA Model wird halb-durchsichtig gerendert

    geschrieben von primenic

    Hallo,
    ich hab mal wieder ein Problem... Also...
    ich wollte ein kleines Spiel programmieren, aber schon beim ersten Model gibts ein Problem. Das Model wird iwie komisch :confused: gerendert. Man hat das Gefühl, als wenn einige Flächen mit 100% Alpha. gerendert werden.

    OK ... ein Bild sagt mehr als 1000 Worte. Ich hab einmal einen Link zum Bild reingestellt.
    http://www.primenic.lima-city.de/Unbenannt.PNG
    Links so wie das Model in meinem Programm aussieht und rechts so wie es im DirectX Viewer (ist ein .x - Model, keine Textur) aussieht.

    Hier mal der Quellcode vom Rendervorgang:

    foreach (ModelMesh oMesh in oModel.Meshes)
                {
                    foreach (BasicEffect oEffect in oMesh.Effects)
                    {
                        //oEffect.AmbientLightColor = new Vector3(1.0f, 1.0f, 1.0f);
                        //oEffect.TextureEnabled = false;
                        //oEffect.LightingEnabled = true;
                        oEffect.EnableDefaultLighting();
    
                        /*oEffect.DirectionalLight0.Enabled = true;
                        oEffect.DirectionalLight1.Enabled = true;
                        oEffect.DirectionalLight2.Enabled = true;
                        oEffect.DirectionalLight0.Direction = oPosition;
                        oEffect.DirectionalLight1.Direction = oPosition;
                        oEffect.DirectionalLight2.Direction = oPosition;
                        oEffect.DirectionalLight0.SpecularColor = new Vector3(1.0f, 1.0f, 1.0f);
                        oEffect.DirectionalLight1.SpecularColor = new Vector3(1.0f, 1.0f, 1.0f);
                        oEffect.DirectionalLight2.SpecularColor = new Vector3(1.0f, 1.0f, 1.0f);
                        oEffect.DirectionalLight0.DiffuseColor = new Vector3(1.0f, 1.0f, 1.0f);
                        oEffect.DirectionalLight1.DiffuseColor = new Vector3(1.0f, 1.0f, 1.0f);
                        oEffect.DirectionalLight2.DiffuseColor = new Vector3(1.0f, 1.0f, 1.0f);*/
    
                        oEffect.World = oGame.oGameState.o_maWorld * Matrix.CreateTranslation(oPosition);
                        oEffect.View = oGame.oGameState.o_maView;
                        oEffect.Projection = oGame.oGameState.o_maProjection;
                    }
                    oMesh.Draw();
                }


    Wie man sieht, hab ich schon einiges Versucht :biggrin:.

    Hoffe ihr könnt mir helfen.

    PS: Wer jetzt drauf kommt und mir sagen möchte, ich soll den Alphawert manuell einstellen... hab ich auch schon versucht.
  • in: [C#] php-Script mit WebBrowser-Controll wiedergeben ?

    geschrieben von primenic

    OK ich werds mal versuchen, sag morgen obs geklappt hat. Geh jetzt schlafen :sleep:

    EDIT:
    Also hab mich jetzt mit dem auseinandergesetzt, was du geschrieben hast... und bin zu den Ergebnis gekommen: "Ich versteh kein Wort" :lol: Kannst mal bitte ein bisschen genauer beschreiben?! - Danke
    PS: nutze Windows

    EDIT 2:
    Ich hab das Problem jetzt gelößt. Also: Ich habe einen sehr kleinen Webserver eingebaut, der die Anfragen bearbeitet.
  • in: [C#] php-Script mit WebBrowser-Controll wiedergeben ?

    geschrieben von primenic

    Hey, ich hab mal wieder :wink: eine Frage. Ich möchte für mein Programm ein Konfigurationsformular schreiben. Da ich keine lust habe die ganze Elemente anzulegen,... wollte ich über das WebBrowser Objekt (also nicht "der" Webbrowser wie z.B. Firefox :wink:) ein php-Script aufrufen. Meine Frage ist nun, ob (php ist ja eigentlich Serverseitig) und wie ich über das WebBrowser Objekt php Seiten (php-Datei befindet sich im Intalldir.) laden und anzeigen kann.
  • in: Mit C# und XNA-Framework Device-objekt abfragen - wie?

    geschrieben von primenic

    Das XNA-Framework basiert ja auf DirectX. Darum gehe ich davon aus, dass das XNA-FW auch ein Device-Objekt erzeugt. Ich möchte nun in mein Programm eine Funktion "in DirectX schreiben" (ist einfach schnell beim Rendern,...). Wie komme ich nun aber an das Device-Objekt ran?! - Wird überhaupt eins erzeug?

    -----------------------------------------------------------------------

    Keiner eine Idee oder einen Tipp ? :nosmile:
  • in: c# direkte Nutzung der DirectX Funktionen

    geschrieben von primenic

    Hallo,
    gibt es eine Möglichkeit, die DirectX Namespaces/Funktionen in ein C# Programm einzubinden (ohne "Umwege", also zB nicht das XNA-FW)?

    Danke schonmal


    Edit:
    Wow das ging schnell!! - Danke für die Antwort per PN :biggrin:

    PS: Mir wurde dieser Link geschikt, für alle die die selbe Frage haben: http://home.arcor.de/bobba3d/Tutorials/D3DInit.html
  • in: Kenn ihr gute Flasheditoren?

    geschrieben von primenic

    mein-wunschname schrieb: Es gibt eine ganze Menge (kostenloser) Programme mit denen man Flash-Dateien erzeugen kann. Hier mal einige Beispiele:
    Wink - hat einen Bildschirm-Aufzeichungsmodus und ist daher gut für Anleitungen usw. geeignet
    Selteco Flash Designer - die Version 1.57.2 (wichtig) ist ein ganz nettes Programm mit dem man schon nach kurzer Einarbeitungszeit ganz ansehnliche Resultate erzielen kann
    LiveSwif - man muss etwas mehr Zeit investieren
    SWFTools - eine Sammlung von Kommandozeilen Programmen, ziemlich professionell


    Danke, hab mir Wink heruntergeladen. Und für "richtige" Animationen hab ich jetzt Sothink SWF easy. - war ja nicht ganz so teuer. :wink:

    Vielen Dank an alle
  • in: Kenn ihr gute Flasheditoren?

    geschrieben von primenic

    Soo viele Antworten^^ - Vielen Dank für die ganzen Antworten.
    sonok schrieb: Ich glaube auch .. Du kannst da mal ein wenig im Forum stöbern, die Frage kam schon oft.

    Ich werd mich mal im Forum umschauen. ;)

    PS: Powerbullet hab ich auch,... ist eine sehr kleiner Editor; nicht ganz, das was ich mir vorgestellt habe, darum hatt ich gefragt :wink:
  • in: Kenn ihr gute Flasheditoren?

    geschrieben von primenic

    Hallo,
    ich suche nach einem (möglichst Freeware) Flasheditor. Ich möchte zB. *.swf Dateien erstellen.
    Oder kennt ihr eine andere Möglichkeit Animationen für eine Homepage zu erstellen?
  • in: C# BackgroundWorker Problem

    geschrieben von primenic

    Hoffe die Antwort kommt nicht zu spät.

    Lege mal den Adapter und die DataTable im HauptThread an und verpack diese Zeile aus der BackWorker Methode:

    MainForm.dataGridView1.DataSource = tbl;


    und verpack sie in ein Invoke

    //einen delegate anlegen
    delegate void del_FillDataTable(DataTable tbl);
    
    //...
    MainForm.Invoke(new del_FillDataTable(FillDataTable), new object[] {tbl /* ist der Parabeter*/ });
    //...
    
    FillDataTable(DataTable tbl)
    {
        MainForm.dataGridView1.DataSource = tbl;
    }


    PS: musst alles "Invoken", was im HauptThread erzeugt wurde und im BackWorker verwendet wird.
  • in: Welche Programmiersprache?

    geschrieben von primenic

    Für Anfänger. Spiele mit DirectX größere Anwendungen, für Windows?? - Ich empfehle C# mit dem XNA Framework (oh man... wie oft ich das heute schon geschrieben habe, komm mir vor wie ein Spammer :wink: ) Das XNA basiert auf DirectX. Es ist zwar in der performance nicht soo schnell wie C/C++ und DirectX, aber da die meisten Effekte in den Spielen heute mit Shadern realisiert werden, ist XNA für den Anfang eine gute Wahl.

    Vorteile:
    - Man muss den Messageloop nicht "von Hand" implementieren
    - Fensterhandle wird automatisch angelegt
    - und das Beste (für mich) es gibt keine verwirrenden Zeiger auf iwelche komischen Devices
    - du kannst Spiele für 3 Plattformen erstellen (PC, XBox und Zune oder wie das Ding heißt)

    Nachteile
    - das XNA baut auf C# auf und ist ein bisschen langsamer als C++
    ... mehr fällt mir nicht ein. Bitte ergänzen, wenn euch noch was einfällt :biggrin:
  • in: Welche Programmiersprache für den Anfang?

    geschrieben von primenic

    erasmuz schrieb:
    primenic schrieb:
    EDIT: Oh man... fast vergessen. Visual Basic gibts ja auch noch. Sie unterscheidet sich am meisten, von den verbreiteten Sprachen, wie C/C++/C#. VB ist wirklich SEHR leicht zu lernen, es gibt auf der Homepage der MS Express Editions sogar einige Video-Tutorials.


    Das ist jetzt Quatsch, VB.Net ist sehr stark an C# angelehnt, da es u.a. auf genau dem gleichen Framework aufbaut und so sehr viele Teile völlig gleich sind, auch wenn die Befehle anders lauten. (In einigen IDEs kann man direkt von C# nach VB.Net übersetzen und umgekehrt).


    Genau das wollte ich nicht schreiben, da man (zB) in VB ein Variable so:

    Dim Value As Interger


    und in C# so:

    int Value;


    anlegt. Außerdem kommt in VB, soweit ich weiß, kein Semikolon ans ende des Befehls, und man kann nicht einfach so einen Mehrzeiligen Befehl schreiben. Aber im Grunde hast du recht :wink:
  • in: Welche Programmiersprache für den Anfang?

    geschrieben von primenic

    Wie die Anderen beiden schon sagten, ist es entscheident, was du Programmieren willst. Soll es allgemein ums Programmieren gehen (und du später in die Spieleprogrammierung umsteigen willst) solltest du mit C anfangen. C++ ist etwas komplexer und eignet sich für Anfänger nicht... naja gut, ich hab damit angefangen (die Sommerferien gingen für drauf ;) ). C# ist in Verbindung mit dem XNA Framework für "einige/viele" Spiele geeignet (ein schönes Beispiel ist Runes of Magic), außerdem ist C# relativ leicht, da man im MS Visual Studio (und Express Editions) ein voll-Intellisensunterstützung hat. Assembler ist so eine Sache :spammer: - würd ich dir von abraten, Assembler ist sehr Platformgebunden und man muss sich selbst ums "Aufräumen" (Aufräumen -> Variablen etc. entfernen) kümmern. Assembler kann aber in Verbindung mit C/C++ das letzte bisschen Performance aus deiner Anwendung quetschen. Java ist eine C ähnliche Sprache, aber nicht leicht zu erlernen. Java ist aber, danke Java-Runtime, plattformunabhänig.
    Hab ich noch eine bekannte/wichtige Sprache vergessen...? - ich glaube nicht :biggrin:

    EDIT: Oh man... fast vergessen. Visual Basic gibts ja auch noch. Sie unterscheidet sich am meisten, von den verbreiteten Sprachen, wie C/C++/C#. VB ist wirklich SEHR leicht zu lernen, es gibt auf der Homepage der MS Express Editions sogar einige Video-Tutorials.

    MS Express Editions: microsoft.de/express

    Runes of Magic: http://www.runesofmagic.com/de/index.html
  • in: Möchte C++ oder C# lernen

    geschrieben von primenic

    So wie du das Spiel beschreibst, dass du erstellen möchtest, (klingt für mich nach einem ...grafisch anspruchslosem Spiel) würde ich dir C# + XNA empfehlen. C# ist (beim Visual Studio/ VS Express) dank der voll-Intellisensunterstützung recht leicht. Das XNA-Framework stellt viele Funktionen, zum arbeiten mit der Grafikkarte (uvm.) bereit.
    Obwohl XNA (C#) nicht so schnell wie C++ (oder auch Assembler^^) ist, wird sich der Performanceunterschied bei deinem Spiel kaum auswirken, außerdem werden viele Effekte nicht mehr "vom Spiel erstellt", sondern via Shader (bzw. aus einer Datei (z.B. .fx)) erstellt/geladen. Da kommen wir auch zum nächsten Punkt: du solltest dich ein wenig mit Shadern beschäftigen.
    Du sagst auch, das man sich bei deinem Spei einloggen kann, PvP,... . Dann musst du dir im Klaren sein, dass du einen Server (Soft- und Hardware) brauchst. Das bedeutet, dass du 2 Programme schreiben musst. Du musst dich mit Netzwerkprogrammierung beschäftigen (bei C# sollte es auch mit TcpClient und TcpListener zu machen sein).
    Man soll sich bei deinem Spiel auch über die Homepage registrieren können. Dazu sag ich nur SQL, Server, Homepage und Interaktion.

    Ach ja fast hätt ichs vergessen... schonmal was von Vektorrechnung, Matrizen oder Koordinatensystemen gehört?

    Ein schönes Beispiel, für ein Spiel das zum Teil mit C# realisiert wurde ist "Runes of Magic" (http://www.runesofmagic.com/de/index.html).

    Meine Meinung? - Fang erstmal mit was kleinem an. Du solltest dich auch erstmal mit der Windowsprogrammierung beschäftigen.

    PS: Wenn dein Spiel auf Linux, Windows, Mac, .... laufen soll, solltest du auf C++ (vorher C) zurückgreifen.
  • in: Programm um Seitenladezeit zu messen

    geschrieben von primenic

    Vielen Dank, genau sowas hab ich gesucht. :)
  • in: Programm um Seitenladezeit zu messen

    geschrieben von primenic

    Hi, kennt ihr ein Programm (oder Addon für Firefox) mit dem man die Zeit messen kann, die der Browser zum Seitenaufbau benötigt?
  • in: [C#] Bild per Stream übertragen

    geschrieben von primenic

    ha, trifft sich ja gut. Ich arbeite grade an einem solchen Programm: :) Hier mal ein ausschnitt aus der FileSend-Funktion.
    Die Funktion ist Teil einer Klasse, kann sein, dass einige Variablen nicht in der Funktion definiert sind.

    void FileSend(string sFileName)
            {
                FileStream oFileStream = new FileStream(sFileName, FileMode.Open);
                FileStream oSendFileStraem = new oFileStream(oFileStream);
                byteBuffer = new byte[oSendFileStream.Length];
                oSendFileStream.Read(byteBuffer, 0, byteBuffer.Length);
                
                oSendNetStreamWriter.Write(sSendFilename);
                oSendNetStreamWriter.Write(oSendFileStream.Length);
                oSendNetStreamWriter.Flush();
    
                int gesamtbytes = byteBuffer.Length;
                int gesendetebytes = 0;
                int restlichebytes = byteBuffer.Length;
    
                while (gesendetebytes < gesamtbytes)
                {
                    if (gesendetebytes > (gesamtbytes - 1024))
                    {
                        oSendNetStream.Write(byteBuffer, gesendetebytes, (gesamtbytes - gesendetebytes));
                    }
                    else
                    {
                        oSendNetStream.Write(byteBuffer, gesendetebytes,1024);
                    }
                    oSendNetStreamWriter.Flush();
                    oSendNetStream.Flush();
                    gesendetebytes = gesendetebytes + 1024;
                }
            }


    und zum Empfangen:

    void Receve(string sRecvFileName)
    {
    FileStream oRecvFileStream = new FileStream(sRecvFileName, FileMode.Create);
                if (sRecvFilename == "" || sRecvFilename == null)
                    sRecvFilename = oSendNetStreamReader.ReadString();
                else
                    oRecvNetStreamReader.ReadString();
                byteBuffer = new byte[oRecvNetStreamReader.ReadInt64()];
    
                int gelesenebytes = 0;
                while (gelesenebytes < byteBuffer.Length)
                {
                    //System.Threading.Thread.Sleep(100);                                   // aus-auskommentieren, wenn er schneller lesen will als senden 
                    if (gelesenebytes > (byteBuffer.Length - 1024))
                    {
                        oRecvNetStream.Read(byteBuffer, gelesenebytes, (byteBuffer.Length - gelesenebytes));
                        oRecvFileStream.Write(byteBuffer, gelesenebytes, (byteBuffer.Length - gelesenebytes));
                    }
                    else
                    {
                        oRecvNetStream.Read(byteBuffer, gelesenebytes, 1024);
                        oRecvFileStream.Write(byteBuffer, gelesenebytes, 1024);
                    }
    
                    oRecvFileStream.Flush();
                    gelesenebytes = gelesenebytes + 1024;
                }
            }


    Hoffe das geht jetzt so... musste sie etwas verändern, soll ja auch ohne Klasse funktionieren. Wenn nicht melde dich nochmal^^
    Die Networkstreams musst du die selber besorgen, wenn du TcpSocket/-Listener nutzt, kannst du über GetStream(); die Stream bekommen.
    Hoffe es hilft dir weiter.

    PS: Dein Fehler ist, dass du zu viele Bytes in den NetworkStream schreiben willst, das Problem hatte ich auch schon.
  • in: Ganze Klassen/Objekte in Datei schreieben?

    geschrieben von primenic

    Das, was du gesagt hast (
    Bei Java gibts ein serializeable, was bedeutet, dass ein Objekt in eine binäre Repräsentation gespeichert werden kann.
    ) trifft schon genau meine Vorstellungen. Es würde aber auch reichen die gesamten Membervariablen zu speichern. (Besser natürlich eine binäre Repräsentation des Objekts)
  • in: Ganze Klassen/Objekte in Datei schreieben?

    geschrieben von primenic

    Hallo,
    wie kann man in C# ganze Klassen und/oder Objekte in eine Datei schreiben. Ich habs mit der Klasse Filestream versucht, aber da kann ich nur ein byte-Array übergeben. BinaryWriter bringt auch keine verwendbare Funktion mit. Gibt es eine Klasse/Funktion, die andere Klassen/Objekte in eine Datei schreiben kann?
  • in: Wie schwitzen Pferde

    geschrieben von primenic

    Das 2. hatte ich auch schon, aber das war etwas zu wenig.
    Danke
  • in: Wie schwitzen Pferde

    geschrieben von primenic

    Hi,
    ich muss für eine Biohausarbeit herausfinden, wie Pferde schwitzen. Bin beim googlen aber nicht wirklich fündig geworden. Könntr ihr mir einen Tipp geben :wink:
  • in: Worauf achten beim PC "selbstbau"

    geschrieben von primenic

    Ich empfehle dir, wenn du bei der CPU Wert auf Leistung legst, noch ein bis zwei Monate zu warten. Intel hat 6-Kernprozessoren angekündigt (für 1.Q 2010). Ansonsten ist beim CPU Einbau noch zu beachten, dass sie ausreichend gekühlt wird und die Wärmeleitpaset (nennt man doch so?!) zwischen Prozessor und Kühlkörper nicht zu dick oder zu dünn aufgetragen ist.
  • in: PHP Session - Problem mit session_start

    geschrieben von primenic

    Ich poste morgen den ganzen Code, hab heute keine Zeit mehr ;)

    PS: Ich had das Problem mit Cookies gelöst. Sollte aber nicht die Endlösung sein. Also Morgen den ganzen Code. Danke bis hierhin :)

    EDIT: Hab heute das ganze nochmal versucht und es geht?! Aber danke für die Hilfe.
  • in: PHP Session - Problem mit session_start

    geschrieben von primenic

    Nein im Moment steht da NICHTS vor. Aber der mein Editor hatte

    <!--
    To change this template, choose Tools | Templates
    and open the template in the editor.
    -->
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


    davor eingefügt, ich habs aber entfernt - war das falsch?!
  • in: PHP Session - Problem mit session_start

    geschrieben von primenic

    OK, danke. Ich werds gleich mal versuchen.

    EDIT: Ne, Problem besteht weiterhin. (Nur der Fehler liegt diesmal in Zeile 1 (hab ja session_start() dahin verschoben).
  • in: PHP Session - Problem mit session_start

    geschrieben von primenic

    Hi,
    auf meiner Homepage wollte ich einen sehr einfachen Mitgliederbereich einbauen. Bisher habe ich nach dem Login die Benutzer-ID als md5-String an die URL´s dran gehängt, um die ID dann via $_GET abzufragen. Es ist aber etwas unsicher und auch lästig, die ID´s an die URL dran zu hängen. Ich habe dann von Sessions gelesen. Ich habe mir auch schon ein paar Tutorials durchgelesen, aber irgentwie will das bei mir nicht richtig klappen. Hier mal ein Ausschnitt aus den PHP-Seiten:

    index.php:

    <html>
    <head>...</head>
    <body>
    <?php
    session_start();
    //... login und userid erzeugen
    // wenn keine parameter an der url hängen, frameset erzeugen und index.php mit verschiedenen parametern aufrufen
    // wenn parameter vorhanden, abfragen und gewünschte seite ausgeben
    $_SESSION['userid'] = $userid;
    ?>
    </body>
    </html>


    andereseite.php:

    <html>
    <head>...</head>
    <body>
    <?php
    $userid = $_SESSION['userid'];
    ?>
    //...
    </body>
    </html>


    Ich erhalte immer diese Fehler-/Warnmeldungen:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/webpages/lima-city/primenic/html/beta/index.php:6) in /home/webpages/lima-city/primenic/html/beta/index.php on line 7

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/webpages/lima-city/primenic/html/beta/index.php:6) in /home/webpages/lima-city/primenic/html/beta/index.php on line 7

    Ich habe ja einen Verdacht: Könnte das Problem darin liegen, dass index.php bei der Frameseterstellung mehrfach aufgerufen wird?
  • in: Tastaturlayout ändern geht nicht - Hilfe!^^

    geschrieben von primenic

    Also Virenscan ist auch durch und wie erwartet: Kein Fund!

    mastersofpuppets schrieb:
    vampiresilence schrieb:
    Drück [ALT]+[LEERTASTE], das dürfte dann reichen.

    Als Alternative, könntest du auch noch das Eingabegebietsschema in der Taskleiste auf Deutsch stellen. Teilweise ist dieses aber unsichtbar, daher musst du es erst sichtbar machen. Das machst du indem du im Kontextmenü die entsprechende Symbolleiste aktivierst.

    Liebe Grüße
    - VampireSilence


    Ändert man das nicht mit ALT + SHIFT?


    Habs auch mit ALT+SHIFT versucht, geht auch nicht.

    Ich hab gerade einen neuen User erzeugt, bei dem ist alles OK.
  • in: Tastaturlayout ändern geht nicht - Hilfe!^^

    geschrieben von primenic

    Hmm... Spywarescan ist fertig, kein Fund.
    Ich lass jetzt mal den Virenscanner drüber laufen.
    (Sollte eigentlich auch nix finden, hab vor 5 Tagen erst Windows neu installiert)
  • in: Tastaturlayout ändern geht nicht - Hilfe!^^

    geschrieben von primenic

    danke für die Antwort. Ich werd gleich mal versuchen

    EDIT: Habs versucht, geht nicht :(
  • in: Tastaturlayout ändern geht nicht - Hilfe!^^

    geschrieben von primenic

    Nachdem mein Computer plötzlich das Tastaturlayout (Eingabegebietsschema) auf US geändert hat, habe ich versucht es wieder auf Deutsch umzustellen. (Systemsteuerung->Sprachoptionen->usw.), wenn ich aber in dem Fenster mit der Liste (die, wo ich deutsch wieder hinzufügen musste) OK klicke, werden die Einstellungen nicht gespeichert.

    Wisst ihr, was man da machen kann; gibt es einen Registrierungseintrag, o.ä. was ich ändern kann?
    Ich habe Win XP Home. Bitte helft mir.
  • in: Programmabsturz bei arbeitintensiven Aufgaben verhindern (C#)

    geschrieben von primenic

    primenic schrieb: Die Lösung sollte sich möglichst auf einen Thread beschränken ;)

    Genau es geht NICHT um Foren-Threads, sondern um Programm-Threads :wink:. Es geht mir darum, dass ich aus einem 2. Thread nicht (ohne weiteres) auf Objekte, die im Hauptthread erstellt wurden, zugreifen kann.
  • in: Programmabsturz bei arbeitintensiven Aufgaben verhindern (C#)

    geschrieben von primenic

    Hi,
    wenn ich in C# eine WinForms Anwendung programmiere und eine arbeitsintensive Methode (zB. nach einem Klick) aufrufe und ausführe reagiert das Programm eine Weile nicht und stürzt manchmal ab. Habt ihr eine Idee, wich ich das verhindern kann. Die Lösung sollte sich möglichst auf einen Thread beschränken ;)

Login zum Webhosting ohne Werbung!