Hallo Münzbieger,
spontan würde ich für deine Battlefieldklasse eine Singletonklasse verwenden, vorrausgesetzt, deine Battlefieldinstanz existiert nur ein einziges mal.
Wenn du daraus eine Singletonklasse gemacht hast, musst du die Headerdatei der "Battlefieldsingletonklasse" in die unit.h (wenn die Datei bei dir so heißt) einbinden und kannst sie in der Unit.cpp / Unit.h verwenden.
Ich weiß jetzt nicht, wie du dein Code in Dateien aufgeteilt hast, deswegen ist dieser Tipp mit Vorsicht zu genießen.
Ich hoffe, ich konnte (ein bißchen) helfen.
Ich bau es mal in deinen Beispielcode ein:
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
//Gestern
rawtime -= 86400; //24 Stunden in Sekunden abziehen
//Ende Gestern
timeinfo = localtime ( &rawtime );
printf ( "Current date and time are: %s", asctime (timeinfo) );
getchar();
return 0;
}
Stimmt war vertauscht. Habs auch gleich korrigiert.
Ja, das dürfte auch nicht all zu schwer sein mit dem Datum. Schau dir dazu mal das hier an: http://www.cplusplus.com/ref/ctime/localtime.html
1.Versuchst du hier jemanden in illegale Machenschaften zu verwickeln?
2.Wie dem auch sei, so lebensmuede bin ich jedenfalls noch nicht.
Da musst du wohl schon selbst mal deinen A**** in Bewegung setzen, oder weiter (vergeblich) auf jemanden warten, der dumm genug ist, seine Product-ID hier zu posten.
3.Der Aufbau der Product-ID unterscheidet sich je nach Windows-Version. Die Chance, dass hier jemand seine Product-ID posten moechte und zudem auch noch hellsehen kann tendiert gegen 0.
4.Du bist im falschen Forum. wmmf
Am besten du bereitest dich schonmal darauf vor, dass dieser Thread hier demnaechst verschwindet. :p
Die Funktionen stehen in der conio.h drin. Allerdings ist diese Bibliothek nicht bei jedem Compiler gleich und somit auch manchmal das Verhalten. In anderen Fällen stehen zwar ein paar der Funktionen zur Verfügung aber nicht alle die möglicherweise bei einem anderen Compiler zur Verfügung stehen. Am besten ist es immer noch über betriebssystemspezifische APIs das ganze zu machen, wie es z. B. die Improved Console macht.
Wenn es also vorerst klappt, dann hast du Glück gehabt, aber wunder dich nicht, wenn es plötzlich nicht mehr funktioniert, wenn du mal einen anderen Compiler benutzt ;).
Frequenzspeicher schrieb:
Hey, tausend dank, mit gotoxy() hast du mir schon weiter geholfen.
Und für alle die so etwas mal suchen hab ich nen super link gefunden:
http://www.tbkoenig.de/conioex.htm
THX
Hmm, die Konsolen-FAQ hätts auch getan, dort findest du noch eine bessere Version dieser ConioEx-Implementierung im Thread "Improved Console".
MfG SideWinder
Naja, im Prinzip musst Du den Buffer schon nach Zeilenumbrüchen abgrasen, was anderes fällt mir da jetzt nicht ein (ausser boost::tokenizer o.Ä.). Die Frage ist nur wie Du das machst.
Du könntest z.B. den Inhalt des Buffers in einen string packen und dann die bereits vorhandenen Funktionen von der string-Klasse benutzen, um ihn aufzusplitten. Beispiel:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str = "TEST\nTSET\nTTT\n"; //hier den Inhalt Deines Buffers zuweisen
size_t pos = 0;
while((pos = str.find("\n")) != -1)
{
cout << str.substr(0, pos) << endl; //oder irgendwas anderes mit dem Teilstring machen machen
str = str.substr(pos+1);
}
return 0;
}
Hallo,
entweder mit NetMessageBufferSend:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/netmgmt/netmgmt/netmessagebuffersend.asp
oder siehe auch hier:
http://www.c-plusplus.net/forum/viewtopic.php?t=66056
MfG
Das Problem liegt darin, dass Du remove() nur den Dateinamen übergibst, nicht aber den Pfad. Deshalb denkt der Computer, dass die Datei im derzeitigen Arbeitsverzeichnis liegt, was in diesem Fall das Verzeichnis sein dürfte, in dem das Programm ausgeführt wird. Dort befindet sich die Datei, die Du eigentlich löschen willst, natürlich nicht. Das Problem kannst Du mit einer der folgenden Möglichkeiten "beheben":
1. Möglichkeit: Du setzt das Verzeichnis, in dem zu löschenden Dateien liegen als Arbeitsverzeichnis, bevor Du versuchst eine Datei zu löschen.
...
SetCurrentDirectory("C:\\Dokumente und Einstellungen\\...\\Lokale Einstellungen\\Temp\\");
...
remove(wfd.cFileName);
2. Möglichkeit: Du gibst beim Aufruf von remove() immer den gesamten Pfad an:
...
string path = "C:\\Dokumente und Einstellungen\\...\\Lokale Einstellungen\\Temp\\";
...
remove((path + wfd.cFileName).c_str());
Was genau ist das Problem? Du musst dir einfach ein char-Array deklarieren und mit deiner Standard-IP-Adresse initialisieren (als Text). Anstatt argv[1] verwendest du dann hald dein char-Array. Und die Abprüfung von argc musst du natürlich auch rausschmeissen ;).
hi,
also ich denke du solltest dir erst einmal speicher reservieren, eine definierte groesse, zb char *eingabe=new char[256], beachte sind nur 255 + \0 .
wenn du das gemacht hast gehst du in eine funktion die da lauten koennte:
char* reserviere(char* eingabe){
char* help=new char[strlen(eingabe)];
strcpy(help,eingabe);
delete[] eingabe;
return help;
}
und die rufst du auf mit:
eingabe=reserviere(eingabe);
waere meine idee, hab sie aber gerade nicht ausprobiert, sollte aber gehen.
gruss
msp