Показать сообщение отдельно
Старый 15.10.2008, 08:38   #1
beZ_probleM
ПроЭктировщик
 
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений
(для 8 пользователей)
Восклицание русский текст из .txt ресурса

Значить так, код должне выводить русский текст из текстового файла в ресурсе. Но проблема в том что ОН НЕ ВЫВОДИТСО ... выводятся токо какието иероглифы и получаетсо что ета функцыя(см.ниже) не работает??о_О потомучто функцыя about_rasa не возвращает русский текст а какието кубики вместо букв... что не правильно?? говорят функцыя StrToUtf8 работает...

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;

function about_rasa(a:string):string;
  var res : resource;
  begin  
    res := openResource('/'+a+'.txt');
    if (resourceAvailable(res)) then about_rasa:=StrToUtf8(readLine(res)); 
    closeResource(res); 
  end;
(Offline)
 
Ответить с цитированием