IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Русские и английские слова, помогите решить задачу
Айра
сообщение 4.01.2008 22:15
Сообщение #21


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Дык подходящая для минэ среда - це АЗС.. блин FPC, а он вредничает sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
compiler
сообщение 4.01.2008 22:34
Сообщение #22


Человек
*****

Группа: Пользователи
Сообщений: 1 050
Пол: Мужской
Реальное имя: Станислав

Репутация: -  3  +


Цитата(Айра @ 4.01.2008 21:15) *
Дык подходящая для минэ среда - це АЗС.. блин FPC, а он вредничает sad.gif
тогда, можна написать программу, которая будет перехватывать функци и заниматься перекодированием... только я в этом не помошникsmile.gif

оффтоп
>>це АЗС.. блин
недавно возле меня открыли заправку FP:)


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 5.01.2008 11:28
Сообщение #23


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Айра @ 4.01.2008 22:15) *

Дык подходящая для минэ среда - це АЗС.. блин FPC, а он вредничает sad.gif

FPC - компилятор. Его можно использовать с различными средами разработки. Если предпорлагается консольная программа - использовать консольную же среду, если программа GUI, то GUI-среду. В первом случае, впрочем, возможно использование GUI-среды с установленным шрифтом TERMINAL и драйвером клавиатуры, поддерживающим 866 страницу.
Иногда полезно и программное решение типа того, что приведено ниже:
unit recode;
interface

const
DOScode = 0;
WinCode = 1;
DestSet : longint = DOScode; {0-DOS,1-Win}

function NumSet(s:string) : longint; {0-DOS,1-Win,4-Unknkwn}
procedure RecodeString(var s:string; Sou,Dest : longint);
procedure RecodeString2current(var s:string);

implementation
const CharSetByte : array[0..1,0..255]of byte = {DOS->Win; Win->DOS}
(( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191),
( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239));
OldSet : longint = 4;
var
CharSet : array[0..1,0..255]of char absolute CharSetByte;

function NumSet(s:string) : longint; {0-DOS,1-Win,4-Unknkwn}
var
i,n0,n1,n2,n3,n4 : longint;
begin
n0 := 0; n1 := 0; n2 := 0; n3 := 0; n4 := 0;
if length(s) > 0 then
for i := 1 to Length(s) do begin
if byte(s[i]) in [128..175] then inc(n0);
if byte(s[i]) in [176,177,192..223,242..251] then inc(n1);
if byte(s[i]) in [224..241] then inc(n4);
end;
if (n0 = n1) then
NumSet := OldSet
else
if n0 > n1 then begin
if n0 > (n1*2) then OldSet := DOScode;
NumSet := DOScode;
end else begin
if n1 > (n0*2) then OldSet := WinCode;
NumSet := WinCode;
end;
end;

procedure RecodeString(var s:string; Sou,Dest : longint);
var i : longint;
begin
if (Sou <> Dest) and (length(s) > 0) then begin
if (Sou = DOScode) and (Dest = WinCode) then
for i := 1 to length(s) do
s[i] := CharSet[DOScode,byte(s[i])]
else
for i := 1 to length(s) do
s[i] := CharSet[WinCode,byte(s[i])];
end;
end;

procedure RecodeString2current(var s:string);
begin
RecodeString(s, NumSet(s), DestSet);
end;

begin
{$ifdef __GUI__}
DestSet := WinCode; {0-DOS,1-Win}
{$else}
DestSet := DOScode; {0-DOS,1-Win}
{$endif}
end.


Сообщение отредактировано: andriano - 5.01.2008 11:29
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 5.01.2008 15:29
Сообщение #24


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
Иногда полезно и программное решение типа того

..оно, если я правильно поняла, будет "перекодировать" информацию.. А как мне его правильно использовать?
Я поместила его в папку, где лежат мои "творения", а в программе добавила uses recode; компилятор не ругается, но и результата нет.. я, наверно, что-то не так делаю..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 5.01.2008 16:48
Сообщение #25


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Ну, примерно так:
вместо
writeln(MyString);
пишешь:
writeln(RecodeString2current(MyString));
Неудобно, конечно, но может оказаться полезным, когда создаешь модуль, который планируется в дальнейшем интенсивно использовать, пичем как в GUI, так и в консоли.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 5.01.2008 16:58
Сообщение #26


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
вместо
writeln(MyString);
пишешь:
writeln(RecodeString2current(MyString));

Это в коде самой программы? И так каждый раз? мдя.. неудобно..

+ сейчас проверила: не проходит компиляцию, пишет на MyString "Can't read or write variables of this type".. значит нужны еще какие-то доработки\переделки?..

Сообщение отредактировано: Айра - 5.01.2008 16:59
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 5.01.2008 17:33
Сообщение #27


просто человек
******

Группа: Модераторы
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


ну естественно...
RecodeString2current - это _процедура_, а не _функция_.
Результата, ассоциированного с именем, нет => чего вы хотите от writeln?
Можно так попробовать:
RecodeString2current(MyString)
writeln(MyString);


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 5.01.2008 17:54
Сообщение #28


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


компилируется, но в файл все равно пишется ерунда: "­Ґа Ў®в Ґв"
..опять что-то не работает.. или я не правильно делаю.. andriano?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
andriano
сообщение 5.01.2008 18:08
Сообщение #29


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Честно говоря, я не телепат.
Обращаю внимание, что в блоке инициализации присутствуют директивы условной компиляции, благодаря которым определяется, какую кодировку следует считать текущей. Для ТМТ будет работать именно этот вариант. В других компиляторах, вероятно, используются другие предопределенные константы, поэтому ту часть желательно подкорректировать под имеющийся компилятор. Если это по каким-либо причинам затруднительно, можно принудительно установить DestSet в нужное значение, не полагаясь на автоопределение.
И еще: модуль, вообще говоря, предназначен для выдачи на экран. Т.е. туда, где точно известна кодировка. В случае файла же ты увидишь в нем то, что тебе покажет вьюер текстовых файлов. А показывать он будет одинаково вне зависимости от того, создан он консольной прогой или GUI-шной. Т.е. в твоем случае настраивать DestSet надо не под тип твоей проги, а под особенности используемого текстововго вьюера. А в этом варианте никакого автоопределения быть не может, а DestSet следует установить только явно из программы.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Айра
сообщение 5.01.2008 18:32
Сообщение #30


Профи
****

Группа: Пользователи
Сообщений: 731
Пол: Женский

Репутация: -  25  +


Цитата
модуль, вообще говоря, предназначен для выдачи на экран

..у меня проблемы были именно с записью в txt-файл (я об этом говорила).. на экране все нормально..
Цитата
А показывать он будет одинаково вне зависимости от того

т.е. независимо от исходной кодировки.. файлы, созданные TPW выглядят нормально.. стоп.. я уже совсем запуталась и ничего не понимаю((((
..наверно, буду пользоваться недавно открытым способом - да здравствует TC7.0 и F3 smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 9.09.2025 15:30
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"