2gb problem bekomme - pos
-
hallo habe ein problem
ich extrahiere aus einer großen dateiwenn die datei größer als 2gb ist gibt mir das programm einen
- wert
hier der source
void CextrrebDlg::OnBnClickedButton1() { char filename[100],filename2[100],filename3[100],path[100],Temp3[300],Temp[200],lba[100]; unsigned char Byte1[2048]; FILE *file_ptr; FILE *LBATXT; FILE *output_ptr; long indx,z; unsigned long DEB,LG; CWnd* pWnd = GetDlgItem(PATH); CWnd* pT1 = GetDlgItem(T1); CWnd* pT2 = GetDlgItem(T2); CWnd* pT3 = GetDlgItem(T3); CWnd* pLBA = GetDlgItem(LBA); pWnd->GetWindowText(path,100); pLBA->GetWindowText(lba,100); pT2->SetWindowText(_T("Extracting LBA, please Wait")); sprintf(filename,"%s%s",path,lba) ; sprintf(filename2,"%sWork\\worktbl.TXT",path) ; if((file_ptr=fopen(filename,"rb"))==NULL) { sprintf(Temp,"Level [2] - Error Opening %s", filename); MessageBox(Temp); exit(0); } if((LBATXT=fopen(filename2, "rt"))==NULL) { sprintf(Temp,"Level [2] - Error Opening %s", filename2); MessageBox(Temp); exit(0); } int StepIt(); CProgressCtrl* pBar=(CProgressCtrl*)GetDlgItem(IDC_PROGRESS1); pBar->SetRange(0,435); pBar->SetPos(0); pBar->SetStep(1); do { UpdateWindow(); bool ReloadWindow(); fgets(Temp, 200, LBATXT); for(indx=0;indx<200;indx++) { if(Temp[indx]=='\n') Temp[indx]='\0'; }; for(indx=0;indx<8;indx++) { ps2conv[indx]= Temp[indx]; }; DEB = hex2dec(); sprintf(Temp3,"%d",DEB); pT3->SetWindowText(Temp3); for(indx=0;indx<8;indx++) { ps2conv[indx]= Temp[indx+9]; }; LG = hex2dec(); z = strlen(Temp)-18; for(indx=0;indx<z;indx++) { filename3[indx] = Temp[indx+18]; }; filename3[indx]='\0'; if (indx ==0) break; sprintf(Temp,"%sWork\\%s",path,filename3); pT2->SetWindowText(_T(filename3)); UpdateWindow(); if((output_ptr=fopen(Temp,"wb"))==NULL) { sprintf(Temp,"Level[3] - Error Opening [%s]", filename3); MessageBox(Temp); exit(0); } fseek(file_ptr,DEB,SEEK_SET);DEB = Start position
hab es schon mit unsigned long probiert
bekomme aber trotz dem einen - wert
wens über die 2gb gehtkann mir einer helfen ?
Danke
-
Die C Funktion die du da verwendest kannst für den Fall wieder vergessen. die verwenden long als fileoffset und das geht bis +2147483647 hoch was 2GB sind, mehr geht net. Wirst wohl oder über auf die Win32 funktionen ausweichen müssen.