IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Не работает поиск в программе, С++ Builder 6
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 146
Пол: Мужской

Репутация: -  0  +


Есть файл, текст в котором в кодировке 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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 7:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name