|
Основной форум Сюда все проблемы связанные с программированием. |
03.02.2009, 22:53
|
#1
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
чо за?...
блин у меня мозги уже плавлятсо от кодинга))
подскажыте почему не работает :
procedure read_(k:string); var res:resource; g:string; i:integer; begin res:=openresource(k); if (resourceAvailable(res)) then begin g:=readline(res); repeat if (g='1') or (g='2') or (g='3') or (g='4') then begin i:=stringtointeger(g); end else begin para[i].nazva:=g; para[i].prepod:=readline(res); para[i].aud:=readline(res); end; g:=readline(res); until g='#'; end; CloseResource(res); end;
Пример содержымого файла :
1
Лек. Об’єктивно–орієнтовне програмування
Лісовець
Аудиторія:1-0413
2
Лек. Релігієзнавство
Множинська Р.В.
Аудиторія:4-0505
#
|
проблема 1оо% не в имени файла а в считывании с файла...
|
(Offline)
|
|
03.02.2009, 23:09
|
#2
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: чо за?...
Может с кодироовкой что?
|
(Offline)
|
|
03.02.2009, 23:50
|
#3
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: чо за?...
наверно со шрифтом... а в какой кодировке нужно сохранять чтоб можно было читать русские буквы из этого .txt-файла?
у меня есть пример обработки русских символов... но я непомню для какой ето кодировки, тоесть какая кодировка должна быть в файле :
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)
|
|
04.02.2009, 01:37
|
#4
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: чо за?...
кинь исходник
|
(Offline)
|
|
04.02.2009, 02:40
|
#5
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: чо за?...
Сообщение от TEMNED
кинь исходник
|
а что по твоему я бросал ещё в самом начале?
|
(Offline)
|
|
04.02.2009, 09:14
|
#6
|
Нуждающийся
Регистрация: 03.10.2008
Сообщений: 61
Написано 13 полезных сообщений (для 44 пользователей)
|
Ответ: чо за?...
Попробуй в файле после знака # оставить пустую строку. У меня при похожей ситеме как раз из за этого зависало.
|
(Offline)
|
|
04.02.2009, 10:10
|
#7
|
Оператор ЭВМ
Регистрация: 24.09.2007
Сообщений: 36
Написано 2 полезных сообщений (для 3 пользователей)
|
Re: чо за?...
Обычно в конце файла пишу:
eof
---
В цикле until g = 'eof';
Всё работает...
|
(Offline)
|
|
04.02.2009, 12:38
|
#8
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: чо за?...
все дело в том, что строка с "#" или с "eof" тоже должна заканчиваться переводом строки
|
(Offline)
|
|
04.02.2009, 15:23
|
#9
|
Оператор ЭВМ
Регистрация: 24.09.2007
Сообщений: 36
Написано 2 полезных сообщений (для 3 пользователей)
|
Re: Ответ: чо за?...
Сообщение от pilgrim
все дело в том, что строка с "#" или с "eof" тоже должна заканчиваться переводом строки
|
Все правильно, я это имел ввиду, когда написал:
eof
--- << Это обязательная строка, т.к. просто перевод строки, после которого нет текста, некоторые текстовые редакторы удаляют автоматом.
|
(Offline)
|
|
04.02.2009, 16:38
|
#10
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: чо за?...
кароче проблема не в той строке на которую заканчивается файл а в том что оно читать не хочет файл когда я сохраняю его в кодировке Юникод(UTF-8 )
когда же сохраняю в обычной кодировке блокнота то оно читает нормально, токо вместо русского текста "ИЕРОГЛИФЫ" какието пишет...
вобщем проблема в кодировке я так понял...
и странно что функция StrToUtf8,которую я выложыл выше, не спасает...
|
(Offline)
|
|
04.02.2009, 16:43
|
#11
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: чо за?...
Program read;
const
voprosy = 20;
var
v,po,o1,o2,o3: array[1..voprosy] of string;
c: integer;
procedure read(t: string);
var
res : resource;
byte,c,c1: integer;
line,a1,a2 : string;
f: boolean;
begin
res := openResource(t);
if (resourceAvailable(res)) then begin
a1:='АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ';
a2:='абвгдежзийклмнопрстуфхцчшщъыьэюя';
for c:=1 to voprosy do begin
line:='';
repeat begin
byte := readByte(res); f:=true;
if byte<> 13 then begin
for c1:=0 to 32 do begin
if byte=(-64+c1) then begin line:=line+copy(a1,c1,c1+1);f:=false;break;end;
if byte=(-32+c1) then begin line:=line+copy(a2,c1,c1+1);f:=false;break;end;
end;
if byte=(-88) then begin line:=line+'Ё';f:=false;end;
if byte=(-72) then begin line:=line+'ё';f:=false;end;
if f then line:=line+chr(byte);
end;end; until byte = 13;
byte := readByte(res);
o3[c]:=line;
end;
closeResource(res);
end; end;
begin
read ('/v.txt'); for c:=1 to voprosy do v[c]:=o3[c];
read ('/po.txt'); for c:=1 to voprosy do po[c]:=o3[c];
read ('/o1.txt'); for c:=1 to voprosy do o1[c]:=o3[c];
read ('/o2.txt'); for c:=1 to voprosy do o2[c]:=o3[c];
read ('/o3.txt');
end.
это задумка одного парня-чтение русских строк из
|
(Offline)
|
|
04.02.2009, 17:16
|
#12
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: чо за?...
без описания сложно розобратсо... мож из этого написать функцию которайа бы в свой результат передавала строку с нормальными символами в кодировке для вывода на дисплей мобильного?
или хоть коменты напишы что где означает... ато я ток понял шо строки мы сохраняем в массив...
вобщем понятно то что ничего не понятно)
|
(Offline)
|
|
04.02.2009, 17:29
|
#13
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: чо за?...
Хорошо. вечером зайду в сеть, попытаюсь че-нить сделать. просто сясь на миниопера. ЕСЛИ ТЕ НЕ трудно скинь твой текст уже в нужной кодировке. Попробую разобраться вечером, самому стало интересно.
|
(Offline)
|
|
04.02.2009, 17:38
|
#14
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: чо за?...
текст я уже приводил какой должен быть в файле а кодировка Юникод(UTF-8 ) это 1оо%
|
(Offline)
|
|
04.02.2009, 18:38
|
#15
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: чо за?...
Сообщение от beZ_probleM
текст я уже приводил какой должен быть в файле а кодировка Юникод(UTF-8 ) это 1оо%
|
Погляди здесь http://forum.boolean.name/showthread.php?t=7592
пример выложен - там перекодировка из win1251 > utf8 поиск в ресурсном файле и вывод на дисплей со скролингом.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:50.
|