sp1nny
25.03.2009, 09:44
Mein Problem ist, das bei einer Abfrage ob eine Datei existiert sie zuerst nicht gefunden wird, jedoch bei erneuter Abfrage schon.
Hier mal der Abschnitt:
do{
HANDLE h1;
cout<<"\nFile 1: ";
cin.clear();
cin.ignore();
cin.get(filename1,255);
h1 = CreateFile(filename1, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(h1 == INVALID_HANDLE_VALUE)
{
found1=0;
cout<<"File not found!"<<endl;
CloseHandle(h1);
}
else
{
cout<<"File found!"<<endl;
found1=1;
if(GetFileSizeEx(h1, &sizecheck1) == 0)
{
filesizefound1=0;
printf("Error with GetFileSizeEx: %ld\n", GetLastError());
CloseHandle(h1);
}
else
{
CloseHandle(h1);
filesizefound1=1;
printf("Size: %i Bytes\n",sizecheck1);
first = fopen(filename1,"rb");
if(!first)
{
printf("%s not accessible!\n",filename1);
goto clean;
}
fseek(first,0,SEEK_END);
size1 = ftell(first);
rewind(first);
fBuff = (char *) calloc(1,size1+1);
fread(fBuff,1,size1,first);
fclose(first);
}
}
}while(found1==0||filesizefound1==0);
Ausgabe:
File 1: lol.exe
File not found!
File 1: lol.exe
File found!
File 2: rofl.exe
File found!.
Wie man sieht habe ich diesen Abschnitt noch für eine andere Datei, bei dieser funktioniert es jedoch auf anhieb. Ich habe keine Ahnung woran es liegen könnte.
( Ja die Dateien existieren wirklich und "File found!" kommt auch nur wenn es existiert und kommt nicht wenn das File nicht existiert (also beim 2. Versuch ) ) ^^
Hat sich erledigt, habe den Fehler gefunden.
Hier mal der Abschnitt:
do{
HANDLE h1;
cout<<"\nFile 1: ";
cin.clear();
cin.ignore();
cin.get(filename1,255);
h1 = CreateFile(filename1, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(h1 == INVALID_HANDLE_VALUE)
{
found1=0;
cout<<"File not found!"<<endl;
CloseHandle(h1);
}
else
{
cout<<"File found!"<<endl;
found1=1;
if(GetFileSizeEx(h1, &sizecheck1) == 0)
{
filesizefound1=0;
printf("Error with GetFileSizeEx: %ld\n", GetLastError());
CloseHandle(h1);
}
else
{
CloseHandle(h1);
filesizefound1=1;
printf("Size: %i Bytes\n",sizecheck1);
first = fopen(filename1,"rb");
if(!first)
{
printf("%s not accessible!\n",filename1);
goto clean;
}
fseek(first,0,SEEK_END);
size1 = ftell(first);
rewind(first);
fBuff = (char *) calloc(1,size1+1);
fread(fBuff,1,size1,first);
fclose(first);
}
}
}while(found1==0||filesizefound1==0);
Ausgabe:
File 1: lol.exe
File not found!
File 1: lol.exe
File found!
File 2: rofl.exe
File found!.
Wie man sieht habe ich diesen Abschnitt noch für eine andere Datei, bei dieser funktioniert es jedoch auf anhieb. Ich habe keine Ahnung woran es liegen könnte.
( Ja die Dateien existieren wirklich und "File found!" kommt auch nur wenn es existiert und kommt nicht wenn das File nicht existiert (also beim 2. Versuch ) ) ^^
Hat sich erledigt, habe den Fehler gefunden.