Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

23.09.2007, 13:09

Zitat von »"Deviloper"«

? length + 1 oder was hättest de gerne David? ^^ Wobei ich mich wundere warum er nicht einfach std::ostream::operator<< nimmt ^^


sizeof( length() ) entspricht sizeof( std::size_type ).
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

12

23.09.2007, 13:27

Zitat von »"David_pb"«

Kompiliert wird das schon, aber es wird natürlich ein zu 99% falscher Wert übergeben! :)


es wird net kompillieren, weil eine ) fehlt ;)

13

23.09.2007, 14:14

@David_pb: Ja klar hatte gedacht du beziehst dich auf die Version ohne sizeof ;)

@Mr.Data: Wie wäre es wenn du nicht für jeden Nachrichten Type eine Funktion anlegst sondern mehr auf den OOP-Gedanken anspringst und das eher so in der Art machst:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
struct Message
{
    std::string message;
    bool result;
    Message(const std::string& message, bool result) : message(message), result(result) {}
};

struct WindowInit : public Message
{
    WindowInit(bool result) : Message(initialized == true ? "Fenster erfolgreich initialisiert!" : "Fenster nicht erfolgreich initialisiert!", result) {}
};

struct ApplicationInit : public Message
{
    ApplicationInit(bool result) : Message(initialized == true ? "Anwendung erfolgreich initialisiert!" : "Anwendung nicht erfolgreich initialisiert!", result) {}
};

void log_message(const Message& message)
{
    std::ofstream out("Logfile.txt", std::ios::ate | std::ios::out);
    out << "Datei: " << __FILE__ << " Zeile: " << __LINE__ << message.result == true ? " " : " FEHLER: " << message.message << std::endl;
}
...

Bearbeitung
Nutzen könntest du das bsw. so:

C-/C++-Quelltext

1
log_message(ApplicationInit(SUCCEED(do_some_d3dstuff())));
...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

14

23.09.2007, 19:46

hätte ich schon machen können nur ich programmier noch net lange und
wollte mal die

C-/C++-Quelltext

1
void showMessage(string (*Message)(bool),bool yes_no);


version anwenden weil ich noch nie mit der übergabe eines funktionsnamen gearbeitet habe. Eigentlich war das nur ein
Test, ob meine version der Logfiles funktioniert.

Ausserdem sind strukturen nicht so gut handhabbar wie klassen, wenn ich mal ne Methode hinzufügen will ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

23.09.2007, 19:57

Zitat von »"Mr. Data"«

Ausserdem sind strukturen nicht so gut handhabbar wie klassen, wenn ich mal ne Methode hinzufügen will ;)


struct und class sind technisch gesehen das selbe. struct gibts in C++ eigentlich nur aus kompatibilitätsgründen zu C. der einzige unterschied zwischen struct und class ist, dass default zugriff und vererbung bei struct public und bei class private ist ;)

16

23.09.2007, 20:00

hab da noch mal ne kleine Frage:

wenn ich der Callback funktion folgendes hinzufüge:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
case WM_PAINT:
PAINTSTRUCT ps;
HDC hDc;
hDc = BeginPaint(hWnd,&ps);
if(hDc == NULL)
showMessage(PaintMessage, false);
else
showMessage(PaintMessage, true);
EndPaint(hWnd, &ps);
break;


dann würde doch jedes mal, wenn ich auch nur die maus bewege eine Nachricht ins Logfile geschrieben werden oder?

17

23.09.2007, 20:34

Nein... nur jedesmal wenn neu gezeichnet wird...
Also wenn du SendMessage(hWnd, WM_PAINT, 0, 0) machst oder wenn das System SendMessage(hWnd, WM_PAINT, 0, 0) sendet.. zB wenn du das Fenster in den unteren Rand verschiebst oder das Fenster überlappt oder solche Späße
http://www.pennergame.de/functions/generate_signature_114955.jpg

Wo die Fähigkeiten aufhören ... fängt der Optimismus an

"Unendlichkeit ist der Mangel an Grenzen" Aristoteles

18

23.09.2007, 21:32

C-/C++-Quelltext

1
2
3
4
5
6
7
case WM_PAINT:
{
    PAINTSTRUCT ps;
    HDC hDC = BeginPaint(hWnd, &ps);
    showMessage(PaintMessage, hDC != NULL);
    EndPaint(hWnd, &ps);
} break;
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

19

06.12.2007, 19:46

Diese frage hat zwar nichts mehr mit den Logfiles zu tun, aber mit dem Thema datei-ein und ausgabe:

Wie kann man denn mit ifstream.read() den gelesenen text in einem string objekt speichern?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

06.12.2007, 19:47

da würd ich eher z.b. zu std::getline() raten ;)

Werbeanzeige