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

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

11

18.04.2006, 22:32

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct ogIndexConfigDlg
{
    int     iAdapter;
    int     iVideoMode;
    bool    bWindowed;
    int     iDevType;
    int     iBackBuffer;
    int     iZStencil;
    int     iAAType;
    int     iAAQL;
    int     iVP;                //0 = HW, 1 = SW, 2 = MX

    int     iDSGuid;
    int     iSF;                //0 = Low, 1 = Medium, 2 = High

    int     iBPS;               //0 = 8bit, 1 = 16bit

};


Das ist die Struktur....

Könntest du bitte mal MEINE Template-Funktionen bei dir probieren!?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

12

18.04.2006, 22:47

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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
//Schreibt eine Struktur in eine Datei 

template <typename T> 
bool ogUtilsWriteStructToFile(wchar_t* sFileName, T* Structur) 
{ 
    //Datei öffnen 

    HANDLE hFile; 
    if((hFile = ::CreateFileW(sFileName,                //Datei 

                              GENERIC_WRITE,            //Rechte 

                              0,                        //Shared-Rechte 

                              NULL,                        //Sicherheitsattribute 

                              CREATE_ALWAYS,            //Verhalten bei speziellen Situationen 

                              FILE_ATTRIBUTE_NORMAL,    //Attribute 

                              NULL)) == INVALID_HANDLE_VALUE) 
   return (false);;//     OG_ERROR_FILE(sFileName, OG_ERROR); 


    //Daten in die Datei schreiben 

    DWORD    dwBytesWritten = 0; 
    if((!::WriteFile(hFile, Structur, sizeof(T), &dwBytesWritten, NULL)) || dwBytesWritten != sizeof(T)) 
return (false);;//        OG_ERROR(L"Es trat ein Fehler beim Schreiben einer Datei auf!", OG_ERROR); 


    //Hanlde schließen 

    ::CloseHandle(hFile); 

    return true; 
} 

//------------------------------------------------------------// 


//Lest eine Struktur in eine Datei 

template <typename T> 
bool ogUtilsReadStructFromFile(wchar_t* sFileName, T* Structur) 
{ 
    //Datei öffnen 

    HANDLE hFile; 
    if((hFile = ::CreateFileW(sFileName,                //Datei 

                              GENERIC_READ,                //Rechte 

                              0,                        //Shared-Rechte 

                              NULL,                        //Sicherheitsattribute 

                              OPEN_EXISTING,            //Verhalten bei speziellen Situationen 

                              0,                        //Attribute 

                              NULL)) == INVALID_HANDLE_VALUE) 
    { 
        DWORD dwErr = ::GetLastError(); 
 return (false);;//       OG_ERROR_FILE(sFileName, OG_ERROR); 

    } 

    //Daten aus Datei lesen 

    DWORD    dwBytesRead = 0; 
    if((!::ReadFile(hFile, Structur, sizeof(T), &dwBytesRead, NULL)) || dwBytesRead != sizeof(T)) 
return (false);;//  OG_ERROR(L"Es trat ein Fehler beim Schreiben einer Datei auf!", OG_ERROR); 


    //Hanlde schließen 

    ::CloseHandle(hFile); 
    
    return true; 
}

struct ogIndexConfigDlg 
{ 
    int        iAdapter; 
    int        iVideoMode; 
    bool    bWindowed; 
    int        iDevType; 
    int        iBackBuffer; 
    int        iZStencil; 
    int        iAAType; 
    int        iAAQL; 
    int        iVP;                //0 = HW, 1 = SW, 2 = MX 

    int        iDSGuid; 
    int        iSF;                //0 = Low, 1 = Medium, 2 = High 

    int        iBPS;                //0 = 8bit, 1 = 16bit 

};

int main (void) 
{ 
        // Schreiben

    ogIndexConfigDlg test;
    test.iAdapter = 555;
    test.iVideoMode = 444;
    //foobar (&test, sizeof(test));

    ogUtilsWriteStructToFile (L"test2.txt", &test);

        // Lesen

    ogIndexConfigDlg test2;
    //foobar2 (&test2, sizeof(test2));

    ogUtilsReadStructFromFile (L"test2.txt", &test2); 

        // Ausgeben

    std::cout << test2.iAdapter << std::endl;
    std::cout << test2.iVideoMode << std::endl;

    std::cin.get ();

    return 0; 
}

Läuft einwandfrei.

Frage: Wir rufst Du die Funktionen auf?

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

13

18.04.2006, 22:51

Ganz "normal":

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ogIndexConfigDlg og_g_IndexConfig;
//sFileName == L"config.ogc"


//Struktur in Datei schreiben

ogUtilsWriteStructToFile(sFileName, &og_g_IndexConfig);

//und so:


//Wenn die Datei existiert

if(ogUtilsFileExists(sFileName))
{
    //Struktur aus Datei holen

    ogUtilsReadStructFromFile(sFileName, &og_g_IndexConfig);
}
else return OG_ERROR;
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

14

18.04.2006, 23:06

3 Fragen:
1. Welchen Compiler
2. Laufen meine Funktionen bei Dir?
3. Warum Templates für hmn "so etwas"?

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

15

18.04.2006, 23:20

1. MS VisualStudio 2005
2. Werd ich noch probieren... Aber ich hab sie ja schon so angepasst, dass sie (FAST) identisch sind!
3. Weil ich die Funktionen allgemein schreiben wollte, um sie ev auch für andere Strukturen oder Klassen oder ähnliches verwenden zu können! Gut, hätte auch einen void-Pointer nehmen können, fand aber die Templates eleganter!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

16

18.04.2006, 23:32

Black-Panther
Auch wenn Templates geil sind, gegen "normale" Funktionen haben sie den Nachteil das sie nicht in einer cpp-Datei zu Objekten werden. Dadurch werden diese Mistdinger auch oft nicht so richtig vom Debugger betrachtet.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

17

22.04.2006, 22:45

Jo, geil sind sie wirklich :D
Das einzige was mir auf die Nerven geht ist, dass man sie sooo schlecht "kontrollieren" kann... :(

Naja... bin gerade wieder zurückgekommen, und werde jetzt dann mal deine Funktionen testen, danach werd ich wieder was schreiben... :D
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

18

23.04.2006, 13:33

So hab jetzt ein neues Projekt gemacht, und in diesem MEINE UND DEINE Funktionen getestet... Alles verlief WUNDERBAR!
Kann es vielleicht sein, dass es Probleme macht, da der Funktionsaufruf in einer DLL ist, und der Header vom Projekt includiert wird?! (Also die Templates selbst!)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

19

27.04.2006, 14:46

Ich bin jetzt echt am Verzweifeln!
Nun habe ichs zwar hinbekommen, dass das Prog. die Datei ausliest, aber das mit dem wiederreinschreiben, funktioniert nicht... Wenn die Datei nicht existiert schon, aber sonst nicht!
Das mit dem Lesen hab ich durch Zufall herausgefunden: Ich hab unter dwShareMode einfach FILE_SHARE_READ | FILE_SHARE_WRITE angegeben, dann läufts... ohne nicht... wobei ich auch nicht verstehe wieso!?!
Dann hab ich mich WIEDERMAL im Inet umgeschaut, obs so ein Problem vielleicht schon mal gab, aber nichts gutes gefunden. Nur so ein paar allgemeine Infos zum ERROR_SHARING_VIOLATION Fehler... Theoretisch müsste es ja funktionieren... hab extra Antivirus und alles ausgeschalten was man ausschalten kann, um sicher zu gehen, dass nicht ein anderer Prozess auf die Datei zugreift, aber nichts...
Hat jemand eine Ahnung was da sein könnte??
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Anonymous

unregistriert

20

27.04.2006, 20:07

Black-Panther
Frage was willst Du machen? Datei öffnen und ans Ende der Datei noch was anhängen?

Werbeanzeige