C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Чтение текстового файла
Dark Elf
Отправлено: 12.09.2003, 13:52


Не зарегистрирован







Уважаемые господа!

Как мне в С++ билдере прочесть из текстового файла строки произвольной длины?

Заранее благодарен за ответ
Dima
Отправлено: 12.09.2003, 15:37


Дежурный стрелочник

Группа: Участник
Сообщений: 61



CODE

fstream inout("fstream.out");
char p[100];
inout.seekg(0);
//прочитать строку до знака \n\r но не более 100 символов
inout.getline(p,100);
Schumi
Отправлено: 12.09.2003, 16:30


Машинист паровоза

Группа: Участник
Сообщений: 206



Попробуй через TStringList. Есть метод LoadFromFile и потом обращаешься к строке через свойство Strings[0]
Или попробуй FileRead и FileOpen
Иван
Отправлено: 12.09.2003, 16:34


Машинист паровоза

Группа: Участник
Сообщений: 207



Смотря для чего, ну в смысле зависит от задачи ,
может достаточно будет использовать LoadFromFile,
или другой способ в стиле C++ Builder.


-----
Shumi опередил меня на 4 мин smile.gif

Отредактировано Иван — 12/09/2003, 17:38
Nimble
Отправлено: 14.09.2003, 12:35


Дежурный стрелочник

Группа: Участник
Сообщений: 34



Вот кусок кода из моей проги, может пригодится:
CODE

   AnsiString ErrFileName=ExtractFilePath(ParamStr(0))+"Errors.log";

   int hErrFile; //указатель на файл.

   //тут создаем или открываем файл
   if (!FileExists(ErrFileName))
     hErrFile=FileCreate(ErrFileName);
   else
     hErrFile=FileOpen(ErrFileName, fmOpenReadWrite);

   //производим запись в файл.
   //параметры: указатель на файл, строка, длинна строки
   FileWrite(hErrFile, ErrMsg.c_str(), ErrMsg.Length());

   //Устанавливаем/получам смещение
   //параметры: указатель на файл, длинна, октуда (0-с начала, 1-с текущего смещения, 2-с конца файла)
   int iFSeek=FileSeek(hErrFile, 0, 2);

   if (iFSeek>0xFFFF)
   {
     char buff[0x7FF]; int i;
     iFSeek=FileSeek(hErrFile, -0x7FF, 2);
     //читаем данные из файла (перед этим устанавливаем нужное нам смещение)
     //параметры: ук.на.ф., строка, длинной ...
     FileRead(hErrFile, buff, iFSeek);
     for(i=0; (i<0x7FF)&&(buff[i]!='<'); i++);
     FileSeek(hErrFile, iFSeek+i, 0);
     FileRead(hErrFile, buff, 0x7FF-i);

     //Закрываем файл
     FileClose(hErrFile);
     //Удаляем
     DeleteFile(ErrFileName);

     hErrFile=FileCreate(ErrFileName);
     FileWrite(hErrFile, buff, 0x7FF-i);
   }

   FileClose(hErrFile);

ну вот вроде всё, что нужно. Извени, было лень вырезать, не относящееся к вопросу, только комментарии добавил.

Вернуться в Вопросы программирования в C++Builder