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

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

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

Основной форум Сюда все проблемы связанные с программированием.

Ответ
 
Опции темы
Старый 17.08.2007, 21:28   #16
uairat
AnyKey`щик
 
Регистрация: 15.08.2007
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

нет.не работает utf8
а как в win1251 сохранить? в блокноте нет такого варианта
(Offline)
 
Ответить с цитированием
Старый 24.08.2007, 12:42   #17
uairat
AnyKey`щик
 
Регистрация: 15.08.2007
Сообщений: 14
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

ну помогите пожалуйста мне для одной проги нужно считывать русские символы из тхт
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 17:30   #18
MotoMustanger
Нуждающийся
 
Регистрация: 13.11.2006
Сообщений: 60
Написано одно полезное сообщение
Re: как работать с тхт файлами?

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

Блин... только что сам наткнулся на эту проблему и изобрел велосипед
Вот мой вариант этой функции, у меня все работает - проверял
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)
 
Ответить с цитированием
Старый 11.09.2007, 08:13   #20
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Re: как работать с тхт файлами?

Кому надо - вот моя процедура по перегонке текста из Win1251 (например, текстовый файл, сохраненный в блокноте как ANSI) в UTF8.

 
Function Encode(a: string): string;
var len, ch: integer;
  st: string;
begin
 st:=''; len:=Length(a)-1;
 for i:=0 to len do begin ch:=ord(GetChar(a,i));
 if ch>126 then st:=st+chr(ch+1104) else st:=st+chr(ch); end;
 Encode:=st;
end;
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
BrainPhP (02.04.2009)
Старый 20.09.2007, 21:20   #21
rimm
AnyKey`щик
 
Регистрация: 28.08.2007
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

Для сохранения в формате win1251 и не только поможет текстовый редактор EmEditor
(Offline)
 
Ответить с цитированием
Старый 20.09.2007, 21:26   #22
rimm
AnyKey`щик
 
Регистрация: 28.08.2007
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

И вот такой вопрос: почему бы не считывать инфу с текстового ресурса побайтово? Подскажите код символа перехода на новую строку please...
(Offline)
 
Ответить с цитированием
Старый 21.09.2007, 09:15   #23
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Re: как работать с тхт файлами?

Коды перехода на новую строку в Windows: 0x0D 0x0A (в десятичной: 13 и 10) они всегда должны идти в паре и именно в такой последовательности. Можно читать и побайтово, но скорость чтения упадет раза в 2, а это не есть гуд. Лучше читать строками, а в конце строки ставить только символ с кодом 0x0D и всё будет работать и давать неплохую экономию памяти если строк очень много. Для обработки текстовых файлов я использую MiBEditor 1.26. Там просто ставишь формат файла "Mac" и он автоматом все переносы строки делает 0x0D.
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 18:19   #24
rimm
AnyKey`щик
 
Регистрация: 28.08.2007
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

Как я понял, функция readLine считывает следующую строку из ресурса. Значит, если в ресурсе несколько строк то функция должна вызываться циклически (например, в цикле с предусловием resourceAvailable(res)=true). Только вот облом какой-то: ресурс не содержит кирилицы, написан в редакторе MP, в нем 3 строки:
some text for trying it to output
string2
string3
Но эмулятор (MidpX J2ME Emulators Package) ничего не показывает.
Считывание же 1-ой строки без цикла свой результат приносит.
В чем же дело???
program OpenTxtResourse;
var
s: array[1..10] of string;
m: array[1..10] of integer;
res : resource;
line : string;
index : integer;
begin
res := OpenResource('/data1.txt');
while resourceAvailable(res) do
begin
s[2] := ReadLine(res);
line:=line+s[2];
end;
closeResource(res);
showForm;
index := formAddString('Byte is: ' + line);
delay(10000);
end.
(Offline)
 
Ответить с цитированием
Старый 22.09.2007, 22:59   #25
ViNT
Модератор
 
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений
(для 817 пользователей)
Re: как работать с тхт файлами?

resourceAvailable(res) указывает на доступность ресурса, поэтому программа просто зависает, так как ресурс доступен и resourceAvailable(res) всегда = true.
Помоему надо делать так:
var
buf:string;
begin
...
buf:='x';
while buf<>'' do
begin

buf := ReadLine(res);
s[2]:=buf;
line:=line+s[2];
end;
index := formAddString('Byte is: ' + line);
(Offline)
 
Ответить с цитированием
Старый 23.09.2007, 00:28   #26
rimm
AnyKey`щик
 
Регистрация: 28.08.2007
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

Точно. Как я раньше не допер! А можно в условии указать readline(res)<>'' Тогда и переменная buf не нужна (мелочь, а приятно )...
(Offline)
 
Ответить с цитированием
Старый 23.09.2007, 10:13   #27
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Re: как работать с тхт файлами?

Сообщение от rimm
Точно. Как я раньше не допер! А можно в условии указать readline(res)<>'' Тогда и переменная buf не нужна (мелочь, а приятно )...
Не, так указывать нельзя. Ты же строку в итоге потеряешь.
Кстати, не стоит забывать об известном глюке MP: при достижении конца файла он должен возращать пустую строку, но такого почему-то не происходит. Так что условие byf<>'' будет ввыполняться всегда и соответственно и текстовый файл вы будете читать до бесконечности (программа зависнет в бесконечном цикле). Для решения этой проблемы надо в конце файла прописать какую-нибудь текстовую константу, служащую маркером конца файла. Например, в конце пишем строку ###
, условие выхода из цикла тогда будет buf<>'###'.
(Offline)
 
Ответить с цитированием
Старый 23.09.2007, 11:42   #28
rimm
AnyKey`щик
 
Регистрация: 28.08.2007
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

Да, TurboPascalевские замашки, похоже, здесь не пройдут...
(Offline)
 
Ответить с цитированием
Старый 11.11.2007, 00:41   #29
slotoskol
AnyKey`щик
 
Регистрация: 10.11.2007
Сообщений: 10
Написано 0 полезных сообщений
(для 0 пользователей)
Re: как работать с тхт файлами?

спасибо большое
(Offline)
 
Ответить с цитированием
Старый 02.04.2009, 12:46   #30
BrainPhP
AnyKey`щик
 
Регистрация: 02.04.2009
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: как работать с тхт файлами?

Добрый день!
с файлами все ясно, кириллицу можно увидить исспользуя, функцию предоставленную ODDом,
при этом файл может быть в ДОС кодировке..
респект ODD!

подскажите как добиться русских букв, если мы тянем данные с сайта,
в какой кодировке нужно слать данные?


на стороне сервера пробывал следующее:

// из win1251 в utf-8
$nstr = iconv("CP1251","UTF-8", $nstr);

// из win1251 в DOS
$nstr = iconv("CP1251","CP866", $nstr);

// win1251 (без функции iconv)

не помогло(
ребята, подскажите как быть?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с файлами в MidletPascal?? artemff MidletPascal 3 30.12.2009 21:20
DDD Карта Таилами Horror 3D-программирование 20 05.09.2007 22:42
Скриптовая система или как работать с файлами Данил Blitz3D 13 18.08.2007 03:35
Работа с файлами smersh Blitz3D 5 04.07.2007 12:56


Часовой пояс GMT +4, время: 02:36.


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