1. Пользуйтесь тегами кода. - [code] ... [/code] 2. Точно указывайте язык, название и версию компилятора (интерпретатора). 3. Название темы должно быть информативным.
В описании темы указываем язык!!!
Есть файл, текст в котором в кодировке DOS. Если в поиске ввожу слово, имеющееся в файле, то программа ничего не находит. Если же это слово скопировать из файла, то все отлично работает. Кодировку текста меняю с помощью функции OemToChar. Текст состоит из 3 столбцов.
Вот эта функция
void __fastcall TForm1::Button5Click(TObject *Sender) { AnsiString filename=Edit1 -> Text; FILE* f; f=fopen(filename.c_str(),"r"); char string[129],*s; int i=0,j=0,k=0,metka=0,num=1; char *str1=" ",*str2=" ", name[150],*var1,*var2; while (fgetc(f)!='|'); fseek(f,1,SEEK_CUR); long int save=ftell(f); char *text; text=Edit2 -> Text.c_str(); i=0; while (text[i]!='\0') { j=0; while (((text[i]!=' ')) && (text[i]!='\0')) { if (num==1) str1[j]=text[i]; if (num==2) str2[j]=text[i]; i++; j++; } i++; num++; } for (i=strlen(str1);i!=0;i--) if (str1[i]==' ') str1[i]=0; for (i=strlen(str2);i!=0;i--) if (str2[i]==' ') str2[i]=0; while(!feof(f)) { fseek(f,save,SEEK_SET); for (i=0;i<83;i++) { s=fgets(string,129,f); OemToChar(string,string); for (j=0;j<86;j++) string[42+j]=0; string[0]=' ';
j=1; if (string[j]!=' ') { for (k=0;k<50;k++) name[k]=0; while ((string[j]!=' ') && (j<40)) { name[j-1]=string[j]; j++; } } if ((strstr(string,str1)) && (strstr(string,str2)) ) { for (j=0;j<strlen(name);j++) string[j+1]=name[j]; RichEdit1->Lines->Add(string); } }
fseek(f,save,SEEK_SET); for (i=0;i<83;i++) { s=fgets(string,129,f); OemToChar(string,string); for (j=0;j<43;j++) string[j]=' '; for (j=0;j<43;j++) string[42*2+j]=0; for (j=0;j<43;j++) { string[j]=string[42+j]; string[42+j]=0; } j=1; if (string[j]!=' ') { for (k=0;k<50;k++) name[k]=0; while ((string[j]!=' ')&& (j<40)) { name[j-1]=string[j]; j++; } } if ((strstr(string,str1)) && (strstr(string,str2)) ) { for (j=0;j<strlen(name);j++) string[j+1]=name[j]; RichEdit1->Lines->Add(string); } }
fseek(f,save,SEEK_SET); for (i=0;i<83;i++) { s=fgets(string,129,f); OemToChar(string,string); for (j=0;j<86;j++) string[j-1]=' '; for (j=0;j<43;j++) { string[j]=string[84+j]; string[84+j]=0; } string[42]=' '; j=1; if (string[j]!=' ') { for (k=0;k<50;k++) name[k]=0; while ((string[j]!=' ') && (j<40)) { name[j-1]=string[j]; j++; } } if ((strstr(string,str1)) && (strstr(string,str2)) ) { for (j=0;j<strlen(name);j++) string[j+1]=name[j]; if ((metka==0) && !(strchr(s,'|'))) RichEdit1->Lines->Add(string); } }
s=fgets(string,129,f); save=ftell(f); } fclose(f); for (i=0;i<strlen(str1);i++) str1[i]=' '; for (i=0;i<strlen(str2);i++) str2[i]=' '; }
Сообщение отредактировано: Neon6868 - 23.08.2009 11:26