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

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

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

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


Профи
****

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

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


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


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

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

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


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

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


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Профи
****

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

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


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

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


Гуру
*****

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

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


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


Профи
****

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

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


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

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

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

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


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

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

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


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


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


Профи
****

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

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


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


Гуру
*****

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

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


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


Профи
****

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

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


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

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

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

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

 





- Текстовая версия 25.04.2024 13:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name