Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > FAQ

FAQ Часто задаваемые вопросы

Ответ
 
Опции темы
Старый 07.09.2007, 04:17   #1
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Непонятки с чтением строк из файла

У меня не получается корректно отлавливать конец файла при чтении строк. В инструкции к MD сказано, что если конец файла достигнут, то оператор ReadLine возвращает пустую строку. Вот примерно как я делаю:

 
res := OpenResource(fname);
if ResourceAvailable(res) then
begin
repeat
      line := ReadLine(res);
      if line='' then break;   // Отлавливаем конец файла
 
                               // Тут что-то делаем со строками
 
until (FALSE);
end;
CloseResource(res);
Но данный код не работает. При чтении программа зависает.
Приходится в файл вконце писать признак конца файла, например символ # и строку выхода заменить на if line = '#' then break; тогда всё замечательно работает. Я тут не пойму это глюк MD или я что-то не так делаю. Просветите меня как правильно определять конец файла.
(Offline)
 
Ответить с цитированием
Старый 07.09.2007, 09:38   #2
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Re: Непонятки с чтением строк из файла

это глюк МР все так делают.
(Offline)
 
Ответить с цитированием
Старый 08.09.2007, 03:55   #3
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Re: Непонятки с чтением строк из файла

Понятно. Спасибо.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 18:57   #4
Gipsy
AnyKey`щик
 
Регистрация: 27.06.2008
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Непонятки с чтением строк из файла

Подскажите чайнику, как с кодировками бороться? А то совсем не читает кирилицу из ресурса
Зы: Спасиб про инфо про ЕОФ, а то я так и не понял по какой причине висит.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 19:42   #5
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Ответ: Непонятки с чтением строк из файла

Сообщение от Gipsy Посмотреть сообщение
Подскажите чайнику, как с кодировками бороться? А то совсем не читает кирилицу из ресурса
Вообще нужна кодировка UTF-8.
(Offline)
 
Ответить с цитированием
Старый 27.06.2008, 21:45   #6
Frank
Нуждающийся
 
Аватар для Frank
 
Регистрация: 22.07.2006
Сообщений: 50
Написано 6 полезных сообщений
(для 19 пользователей)
Ответ: Непонятки с чтением строк из файла

Сообщение от Gipsy Посмотреть сообщение
Подскажите чайнику, как с кодировками бороться?
Для борьбы с кодировкой юзай этот код:
Function StrToUtf8(s: string;): string; // Корректирует русскую кодировку в строках взятых из ресурсов...
var i, c: integer; ch: char; ss: string;
begin
	if (pos(s,chr(65488))<>-1) or (pos(s,chr(65489))<>-1) then begin // если строка содержит русские симовлы, то
		for i:=1 to Length(s) do begin // перебираем строку
			ch:=GetChar(s,i-1); c:=ord(ch);	// берем по байтику
			if c=65488 then begin				// если байт равен 65488, то следующий байт отвечает за русскую букву
				ss:=ss+CHR(ord(GetChar(s,i))-64384);	// находим русскую букву и запоминаем
				i:=i+1;																// это чтобы мы перешли на следующую букву, а не брали следующий байт
			end
			else begin
				if c=65489 then begin						// то же самое но с другим байт-кодом
					ss:=ss+chr(ord(GetChar(s,i))-64320);
					i:=i+1;
				end
				else ss:=ss+ch;										// если это не русская буква, то просто ее добавим
			end;
		end;
		StrToUtf8:=ss;							// возвращаем откорректированный текст
	end
	else StrToUtf8:=s;			// если строка не содержала русских букв, то просто ее и возвратим...
end;
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Frank за это полезное сообщение:
CTFMoN (06.09.2008), Romanzes (28.06.2008)
Старый 29.07.2008, 12:52   #7
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 05.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Непонятки с чтением строк из файла

Как сделать, чтобы можно было читать не только кириллицу, но и такие буквы как: ї, љ, њ, ќ? Вообще эти символы относятся к кириллическим, но если использовать приведенную выше функцию StrToUtf8, то прога все равно зависает.

PS: Да, мне это нужно.

Последний раз редактировалось Romanzes, 29.07.2008 в 16:19.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список строк artemff Программирование 1 02.01.2010 11:43
Непонятки с кодировкой... inlanger Основной форум 12 05.10.2008 13:39
Текстовые сообщения интерфейса - в виде массива строк? Skythrone Основной форум 6 25.09.2008 20:18
Кол-во строк в ресурсном файле DmT Основной форум 3 03.11.2007 06:20
Непонятки с компиляцией библиотек ARV Основной форум 3 05.01.2007 17:25


Часовой пояс GMT +1, время: 19:03.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com