the_undertaker
Erfahrenes Mitglied
Hallo,
ich komme mit einer Funktion, die die Größe einer Textdatei herausfinden soll nicht weiter. Beim ersten Aufruf funktioniert sie, beim 2. Aufruf gibt sie aber -1 zurück, was falsch ist. Hier mal Auszüge aus meinem Code (es soll ein Mini-Schachprogramm werden, ist auch noch nicht vollständig, mir kommt es auf die Funktion GetDateigroesse() an):
Kann mir da jemand helfen?
ich komme mit einer Funktion, die die Größe einer Textdatei herausfinden soll nicht weiter. Beim ersten Aufruf funktioniert sie, beim 2. Aufruf gibt sie aber -1 zurück, was falsch ist. Hier mal Auszüge aus meinem Code (es soll ein Mini-Schachprogramm werden, ist auch noch nicht vollständig, mir kommt es auf die Funktion GetDateigroesse() an):
C++:
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <ctime>
using namespace std;
//...
fstream verbotfile("Zugverbote.txt",ios::in|ios::out|ios::binary);
long dateigroesse;
//...
long GetDateigroesse();
int main()
{
srand(unsigned(time(NULL)));
short x;
while(1)
{
gewonnen=0;
for(x=0; x<=2; x++)
schachfeld[x][0]=2;//2=weiß
for(x=0; x<=2; x++)
schachfeld[x][1]=32;//32=leer
for(x=0; x<=2; x++)
schachfeld[x][2]=1;//1=schwarz
dateigroesse=GetDateigroesse();
/*Hier wird dateigroesse beim 2. Durchlauf -1, vorher funktionierts*/
char ***verbotenezuege=new char**[dateigroesse/12];
for(short x=0; x<dateigroesse/12; ++x)
verbotenezuege[x]=new char*[12];
for(short x=0; x<dateigroesse/12; ++x)
for(short y=0; y<4; ++y)
verbotenezuege[x][y]=new char[3];
VerboteAusDatei(verbotenezuege);
while(1)
{
SpielfeldAusgabe();
BenutzerZug();
amzug=2;
GewonnenTest();
if(gewonnen==2)
{
SpielfeldAusgabe();
VerboteInDatei(verbotenezuege);
cout<<"Du hast gewonnen!\n";
break;
}
gewonnen=0;
SpielfeldAusgabe();
ComputerZug();
amzug=1;
GewonnenTest();
if(gewonnen==1)
{
SpielfeldAusgabe();
VerboteInDatei(verbotenezuege);
cout<<"Du hast verloren!\n";
break;
}
}
cout<<"Noch eine Partie spielen (j/n)? ";
char ans;
cin>>ans;
if(ans!='j'&&ans!='J')
break;
for(short x=0; x<dateigroesse/12; ++x)
for(short y=0; y<4; ++y)
delete[] verbotenezuege[x][y];
for(short x=0; x<dateigroesse/12; ++x)
delete[] verbotenezuege[x];
delete[] verbotenezuege;
}
return 0;
}
//...
long GetDateigroesse()
{
verbotfile.seekg(0, ios::end);
return verbotfile.tellg();
}
Kann mir da jemand helfen?