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

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

21

12.09.2009, 21:25

Hehe warte einfach noch 2 bis 3 Monate dann ist GUP soweit fertig das es getestet werden kann dann kannste dein Game dadrüber verteilen und auch dadrüber Updates verteilen *hehe*
Homepage: fkrauthan.de | Browser-game: flowergame.net

22

13.09.2009, 01:33

Zitat von »"drakon"«

Zitat von »"Jonathan_Klein"«

Was wiederum genau das selbe wie das Array selber ist.

C-/C++-Quelltext

1
2
int a[5];
a==&a[0]; //immer wahr


a ist nicht gleich a[0].. a lässt sich nur zu etwas umwandeln, was das gleiche, wie a[0] ist. Inkrementier mal a und a[0]. Dann siehst du, dass es offensichtlich nicht dasselbe ist..

Ich rede ja auch von &a[0] und nicht von a[0]. So wie ich das sehe, ist sowohl a als auch &a[0] jeweils ein int*. Oder etwa nicht?
Lieber dumm fragen, als dumm bleiben!

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

23

13.09.2009, 01:38

Sorry. Da gehört ein & hin.

Nein. a lässt sich nur implizit in ein int* konvertieren. Das ist ein Unterschied. Du kannst ja jede beliebige Klasse selbt schreiben, die sich auch in einen int* umwandeln lässt. Das heisst aber nicht, dass sie das gleiche ist..

Wie gesagt, um das zu überprüfen kannst du mal probieren a zu inkrementieren. Wenn es ein int* wäre, müsste das ja gehen..

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

24

13.09.2009, 10:33

Genau, a ist ein Array, &a[0] die Adresse des ersten Elements von diesem Array (a lässt sich lediglich implizit in einen Pointer auf das erste Element von a umwandeln).

Zitat von »"drakon"«

Wie gesagt, um das zu überprüfen kannst du mal probieren a zu inkrementieren. Wenn es ein int* wäre, müsste das ja gehen..

Dank der impliziten Umwandlung sollte das eigentlich funktionieren...

Du kannst aber einfach mal schauen was bei sizeof(a) und bei sizeof(&a[0]) rauskommt ;)

killmichnich

unregistriert

25

13.09.2009, 11:23

also .... ich hab jetzt zumindest mal rausgefunden, dass es (wahrschl. nur teilweise) an dem zeilenumbruch am ende lag. Das hab ich jetzt ausgebessert und es funktioniert zumindest teilweise ... ich finds ja eigtl. recht lustig =)
Hier mal der Codeausschnitt bei dems hapert, falls sich einer meiner erbarmen möchte und ihn durchliest:

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
ifstream f;
    f.open("updates.nix", ios::in | ios::binary); //die datei öffnen in der die dateien und ihr ziel stehen

    char cnumber[128];
    f.getline(cnumber, sizeof(cnumber));
    int anzahl = atoi(cnumber);//die anzahl an neuen dateien rausfinden

    int number = 0;
    char source[128];
    char target[128];
    for(int i=0; i<anzahl; i++)
    {
        void* TEXT;
        unsigned int TEXTSIZE = 0;
        ZeroMemory(source, sizeof(source));
        ZeroMemory(target, sizeof(target));//die array leeren (diesmal hoffentlich richtig?)

        f.getline(source, sizeof(source));
        f.getline(target, sizeof(target));
        ZeroMemory(&source[strlen(source)-1], sizeof(source));//den zeilenumbruch am ende entfernen

        if(i!=anzahl-1)
        {
            ZeroMemory(&target[strlen(target)-1], sizeof(target));//nur wenn es nicht die letzte zeile ist den zeilenubruch entfernen

        }
        result = readArchivedFile("updates.zip", source, "", &TEXT, &TEXTSIZE);//hier die datei aus dem zip archhiv lesen (funktion aus dem tutorial hier im forum, auch schon getesten, es funktioniert)

        ofstream of; //hier soll dann der inhalt in die datei geschrieben werden, wobei jezt nur "text" drin steht, zum testen

        cout<<"| "<<target<<" |"<<endl;
        of.open(target, ios::out | ios::binary);
        of.write("text", strlen("text"));
        of.close();
       /* if(result)
        {
            cout<<"Datei "<<source<<" konnte nicht extrahiert werden, Fehlercode: "<<result<<endl;
            continue;
        }
        else
        {
            number = i+1;  //mitzählen wieviele dateiens wirklich waren
        }*/
        delete TEXT;
    }
    f.close();

naja also das mehr oder weniger lustige dran is, dass wenn ich die Funktion readArchivedFile auskommentier, erstellts mir die dateien und schreib "text" rein ... wenn ich die Funktion aber aufruf steht in der variablen target nix mehr drin und es werden keine dateien erstellt ...
Mach ich da schon wieder was mit dem Speicher falsch oder was? ôO

Bitte helft mir ^^

Werbeanzeige