Jag håller på att göra ett program som startar quake 3 och ansluter till en server men jag har fastnat när jag ska läsa in servrarna ifrån en textfil.
Jag använder följande kod för att läsa filen och lägga in det i min listbox:
ifstream fin;
fin.open("server.cfg");
if (fin.is_open())
{
while (fin.get(ch))
SendDlgItemMessage(hwnd, IDC_SERVER, LB_ADDSTRING, 0, (LPARAM)ch);
}
fin.close();
men när jag gör så så får jag följande felmeddelanden:
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(34) : error C2360:
initialization of 'fin' is skipped by 'case' label
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(25) :
see declaration of 'fin'
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(37) : error C2360:
initialization of 'fin' is skipped by 'case' label
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(25) :
see declaration of 'fin'
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(39) : error C2360:
initialization of 'fin' is skipped by 'case' label
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(25) :
see declaration of 'fin'
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(47) : error C2360:
initialization of 'fin' is skipped by 'case' label
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(25) :
see declaration of 'fin'
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(71) : error C2360:
initialization of 'fin' is skipped by 'case' label
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(25) :
see declaration of 'fin'
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(74) : error C2361:
initialization of 'fin' is skipped by 'default' label
C:\Documents and Settings\johan\Mina dokument\programmering\projekt\q3 launcher\main.cpp(25) :
see declaration of 'fin'
Error executing cl.exe.
någon som vet hur jag ska göra ?
Jag är rätt så ny på filhantering så jag tror att detta skulle vara ett projekt att lära sig på.
Edit:
Glömde min andra fråga:
Hur gör jag för att starta ett annat program?
Pröva att sätta "ifstream fin;" före switch-satsen. Fast jag tycker att varningen/felet låter misstänkt likt en kompilatorbugg. Vilken kompilator, och vilka felrättningar har du installerat?
Har tyvärr aldrig använt degubern särskilt mycket, har svårt att förstå mig på allting som visas.
Nej jag säger inte att det är enkelt, men ett tips är att åtminstone försöka sätta sig in i vad som sker och varför det sker. Då blir debuggern din bästa vän :)
Visual c++ 6.0 använder jag, felrättningar vet jag inte vad det är riktigt, skulle du kunna förklara mer. Det börjar i alla fall fungera lite nu, i alla fall så länge filen är tom om den inte är det så får jag ett minnesfel!
felet:
instruktionen på "0x77d38c2c" referade till "0x00000073".
The memory could not be read
Ser ut som att du petar i minne som du inte ska peta i, men att felet ligger i hur funktioner ska användas inte i hur du själv pekar i minnet. Vid avlusning av minnesfel är debuggern verkligen ens bästa vän då den steg för steg avslöjar vad varje processorinstruktion gör, men i ditt fall är kanske koden såpass liten att man ändå kan klura ut vad som går snett. Du skriver att om filen är tom fungerar det... kan det tyda på att det du läst in och vill skicka vidare inte är det du tror det är? Om filen är tom körs ju inte whileloopen... ;)
Har tyvärr aldrig använt degubern särskilt mycket, har svårt att förstå mig på allting som visas.
Nej jag säger inte att det är enkelt, men ett tips är att åtminstone försöka sätta sig in i vad som sker och varför det sker. Då blir debuggern din bästa vän :)
Jag följde ditt råd pew och satte ut lite breakpoints och fick ett nytt meddelandet. Och allting i fin assembler(?).
Jag följde ditt råd pew och satte ut lite breakpoints och fick ett nytt meddelandet. Och allting i fin assembler(?).
Bifogar en bild också.
bild
Edit: ser precis nu att min c++ bok ligger precis ijämte mig, får nog ta och öppna den.
Jo, det är i x86 assembler. Men bara att titta på ett stycke leder sällan någon vart då det är ett antal rader... ;) Som sagt så tror jag att felet är att du läser in ett tecken, men av funktionen du anropar tolkar det tecknets värde (ascii för 73?) som en minnesadress och då blir det knas. Inte säker på detta, men om det är så, blir det naturligtvis en krasch.