Помогите с файлом!!!
От: kirina  
Дата: 01.06.02 19:27
Оценка:
Проблемс...
Мне нужно считывать любой кусок файла, примерно такого содержания:

йцуйцуйцу/123123123123
вапывп/564564564564645
вапывпы/56756756756333

При этом буквы я считываю в ComboBox, так:

int strwin()
{    
    int len1=0,len2=0;
    len=strcspn(pch,"\r");
    pch=pch+len;
    while (*pch == '\n\r'|| *pch == '/') pch++;
    len1=strcspn(pch,"\r");
    len2=strcspn(pch,"/");
    return len2-len1;
}
...
    pch=(PSTR)pvfile;
    bpch=(PSTR)pvfile;
...
k=0;
    while (*pch!=0){
    for (i=0;i<100;i++) buff[i]=0;
    i=0;k=strwin();pch=pch+2;
    while (i<k-2){
        buff[i]=*pch;
        pch++;
        i++;
     }
    ComboBox_AddString(hwndT,buff);
    }
...

Затем, выбирается строчка из ComboBox, и должна выйти на экран строка, соответствующая выбору:
...
 case IDC_FAM:
    DWORD dw = ComboBox_GetCurSel(hwndCtl);
            pch=bpch;
    for (i=0;i<100;i++) buff[i]=0;
    i=0;
    while (i<=(int)dw){
        k=strwin();
        i++;
    }    
    i=0;
    pch=pch+2;
    while (i<k-2){
        buff[i]=*pch;
        pch++;
        i++;
            }
    SetDlgItemText(hwnd,IDC_RESULTS,buff);
...
    }

Здесь возникает проблема, заключающаяся в том, что выодится одна и та же строка — первая!!!
Где я наглючила, плиз?
Irina
Re: Помогите с файлом!!!
От: Micle  
Дата: 01.06.02 21:51
Оценка:
Здравствуйте kirina, Вы писали:

K>Проблемс...

K>Мне нужно считывать любой кусок файла, примерно такого содержания:
K>
K>йцуйцуйцу/123123123123
K>вапывп/564564564564645
K>вапывпы/56756756756333
K>

K>При этом буквы я считываю в ComboBox, так:
K>

K>int strwin()
K>{    
K>    int len1=0,len2=0;
K>    len=strcspn(pch,"\r");
K>    pch=pch+len;
K>    while (*pch == '\n\r'|| *pch == '/') pch++;
K>    len1=strcspn(pch,"\r");
K>    len2=strcspn(pch,"/");
K>    return len2-len1;
K>}
K>...
K>    pch=(PSTR)pvfile;
K>    bpch=(PSTR)pvfile;
K>...
K>k=0;
K>    while (*pch!=0){
K>    for (i=0;i<100;i++) buff[i]=0;
K>    i=0;k=strwin();pch=pch+2;
K>    while (i<k-2){
K>        buff[i]=*pch;
K>        pch++;
K>        i++;
K>     }
K>    ComboBox_AddString(hwndT,buff);
K>    }
K>...
K>

K>Затем, выбирается строчка из ComboBox, и должна выйти на экран строка, соответствующая выбору:
K>
K>...
K> case IDC_FAM:
K>    DWORD dw = ComboBox_GetCurSel(hwndCtl);
K>            pch=bpch;
K>    for (i=0;i<100;i++) buff[i]=0;
K>    i=0;
K>    while (i<=(int)dw){
K>        k=strwin();
K>        i++;
K>    }    
K>    i=0;
K>    pch=pch+2;
K>    while (i<k-2){
K>        buff[i]=*pch;
K>        pch++;
K>        i++;
K>            }
K>    SetDlgItemText(hwnd,IDC_RESULTS,buff);
K>...
K>    }
K>

K>Здесь возникает проблема, заключающаяся в том, что выодится одна и та же строка — первая!!!
K>Где я наглючила, плиз?
K>Irina
Я очень извиняюсь — сам от горшка три вершка, но есть одна мыслишка. При использовании цикла с предусловием
while (*pch == '\n\r'|| *pch == '/') pch++;
не указано само тело цикла. Мне кажется нужно сделать так:
while (*pch == '\n\r'|| *pch == '/')
{
pch++;
len1=strcspn(pch,"\r");
len2=strcspn(pch,"/");
return len2-len1;
}
Прошу простить если написал чушь.
Re[2]: Помогите с файлом!!!
От: Аноним  
Дата: 02.06.02 03:58
Оценка:
Здравствуйте Micle, Вы писали:
M>Я очень извиняюсь — сам от горшка три вершка, но есть одна мыслишка. При использовании цикла с предусловием
M>while (*pch == '\n\r'|| *pch == '/') pch++;
M> не указано само тело цикла. Мне кажется нужно сделать так:
M>while (*pch == '\n\r'|| *pch == '/')
M> {
M> pch++;
M> len1=strcspn(pch,"\r");
M> len2=strcspn(pch,"/");
M> return len2-len1;
M> }
M>Прошу простить если написал чушь.

Нет, это совсем из другой оперы, данный цикл используется для прохода по строке, а len1 и len2 для просчета длины строки от начала до слэша...
kirina
Re: Помогите с файлом!!!
От: Tigor Россия  
Дата: 02.06.02 06:04
Оценка:
Здравствуйте kirina, Вы писали:

K> while (*pch == '\n\r'|| *pch == '/') pch++;


А что вот это
*pch == '\n\r'
значит на словах?
Может тут и верно всё, просто первый раз в жизни вижу такую '\n\r'
запись.
К сожалению, в действительности все выглядит иначе, чем на самом деле.
Re[3]: Помогите с файлом!!!
От: Dwarf Россия dwarf.h1.ru
Дата: 02.06.02 13:21
Оценка:
тут вот что вызывает подозрения:
*pch == '\n\r'
В одиночных кавычках может присутствовать только один символ — это хоть компиляется?
Народу не нужны нездоровые сенсации. Народу нужны здоровые сенсации! (с) Стругацкие.
Re: Помогите с файлом!!!
От: Slayer Россия  
Дата: 03.06.02 02:33
Оценка:
K>Здесь возникает проблема, заключающаяся в том, что выодится одна и та же строка — первая!!!
K>Где я наглючила, плиз?
K>Irina
'\n\r' — эта строчка действительно вызывает сомнения... Однако если дело не в ней попробуй отладить свою прогу возможно что-то прояснится...
Re: Помогите с файлом!!!
От: Slayer Россия  
Дата: 03.06.02 02:43
Оценка:
K>Здесь возникает проблема, заключающаяся в том, что выодится одна и та же строка — первая!!!
K>Где я наглючила, плиз?
K>Irina

P.S. Довольно странный способ считывания из файла...
ИМХО на много удобнее использовать потоки С++(fstream, ifstream,ofstream)

Считывание выглядит примерно так:



ifstream sourcefile;
sourcefile.open("tmp",ios::in|ios::binary);// Можно открывать не двоичный, а текстовый файл
//Именно чтение:
    char buff[НУЖНАЯ ДЛИННА];
    char c;
    char filesource[100];
        int i=0;
    while (!sourcefile.eof())
    {
      buf[i]=c;
          c=sourcefile.get(); // осимвольное считывание здесь ты можешь выбросить не нужные тебе символы. А также можно вставить построчное считывание или сразу в буфер...
          i++;
    }
    sourcefile.close();

Удачи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.