AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.12.2006, 11:50   #1  
iolanna is offline
iolanna
Участник
 
38 / 10 (1) +
Регистрация: 25.10.2006
:(
У меня текстовый файл, в нем много строк, но он берет только первую, как добраться до второй?
Descrip-char
TFile.OPEN(FileName);
TFile.TEXTMODE := FALSE;

WHILE TFile.POS <>TFile.LEN DO BEGIN
TFile.READ(Descrip);
Старый 13.12.2006, 11:58   #2  
yauhen is offline
yauhen
Участник
 
28 / 10 (1) +
Регистрация: 20.11.2006
Надо не WHILE TFile.POS <>TFile.LEN DO BEGIN, а WHILE TFile.POS < TFile.LEN DO BEGIN. Тогда будет счастье.
и ещё TFile.TEXTMODE := TRUE;

А кто-нибудь знает, как добавить символ новой строки (аналог '\n' или Environment.NewLine ), чтобы считаные из файла строки склеить в одну строку и получить тоже, что и в файле.
Старый 13.12.2006, 12:34   #3  
Milk is offline
Milk
Участник
 
242 / 12 (1) ++
Регистрация: 08.06.2006
2 yauhen: Если не ошибаюсь, символ новой строки в таблице ASCII имеет номер 10. Поэтому должно помочь завести переменную типа Char, присвоить ей значение 10 и ее прибавлять к строке.
Старый 13.12.2006, 18:26   #4  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от yauhen Посмотреть сообщение
А кто-нибудь знает, как добавить символ новой строки (аналог '\n' или Environment.NewLine ), чтобы считаные из файла строки склеить в одну строку и получить тоже, что и в файле.
Переменная CR text2

CR[1] := 13;
CR[2] := 10;
Если переменную CR прибавлять в конец строки, то будет имитация [возврат каретки + перевод строки]
Старый 15.12.2006, 13:50   #5  
yauhen is offline
yauhen
Участник
 
28 / 10 (1) +
Регистрация: 20.11.2006
Попробовал использовать CR text2, не помогает. В text box отображаются 2 квадратика вместо переврда строки. Вот используемый код:

NewLine[1] := 13;
NewLine[2] := 10;
f.TEXTMODE := TRUE;
Text := '';
IF f.OPEN(FileName) THEN
BEGIN
WHILE f.POS < f.LEN DO
BEGIN
f.READ(Temp);
IF Text = '' THEN
Text := Temp
ELSE
Text := Text + NewLine + Temp;
END;
f.CLOSE();
END;
EXIT(Text);

Если вместо NewLine использовать '\', то происходит перевод строки первый раз, но потом просто выводится символ \. Поэтому пока использую ' '.
Старый 15.12.2006, 15:10   #6  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Создай лучше InSteram и читай файл построчно.

f.TEXTMODE(TRUE);
f.OPEN(Filename);
f.CREATEINSTREAM(StreamInObj);

i := 1;
WHILE NOT (StreamInObj.EOS()) DO
BEGIN
StreamInObj.READTEXT(Buffer);
MESSAGE('Line No. %1 %2', i , Buffer);
i := i + 1;
END;

f.CLOSE();
Старый 15.12.2006, 16:43   #7  
yauhen is offline
yauhen
Участник
 
28 / 10 (1) +
Регистрация: 20.11.2006
Чем чтение из InStream лучше чтения прямо из файла применительно к Navision?
Старый 15.12.2006, 16:51   #8  
Corleone is offline
Corleone
Участник
 
355 / 10 (1) +
Регистрация: 27.05.2004
Адрес: London
Тем что в данном случае можно организовать чтение файла по строкам без лишних движений. К тому же этот способ более универсальный, можно считывать файлы в BLOB поля таблицы и BLOB переменные.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:54.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.