Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите пожалуйста! [D6, WinME]


HDD ©   (2002-01-30 05:54:00) 

Как в RichEdit1 сменить кодировку текста с Дос в Виндовс и обратно? Желательно на примере?
Заранее благодарен Кирилл!


pasha_golub   (2002-01-31 13:56:00) [1]

>IronHawk © (31.01.02 10:28)
Я не уверен, но Default по-моему значит по умолчанию, а это не обязательно ANSI.


Андрей Сенченко   (2002-01-31 12:29:00) [2]

> KS (31.01.02 09:14)
Никто ничего не запрещал ... я сказал то, что сказал : "Фактически получается, что Ты пытаешься преобразовать неизвестно что"
И это действительно так: Вы же сами в соей реплике наложили ограничение в виде размера string-овой переменной


IronHawk   (2002-01-31 10:28:00) [3]

excuse me

NO RichEdit1.Font.Charset:=ANSI_CHARSET;

correct

RichEdit1.Font.Charset:=DEFAULT_CHARSET;


IronHawk   (2002-01-31 10:25:00) [4]

>>> HDD

windows charset

RichEdit1.Font.Charset:=ANSI_CHARSET;

dos charset

RichEdit1.Font.Charset:=OEM_CHARSET;


serjant   (2002-01-31 10:11:00) [5]

Используй функции CharToOEM && OEMToChar


KS   (2002-01-31 09:14:00) [6]

to: Андрей Сенченко © (30.01.02 15:50)

Чтож Вы HDD запретили с RichEdit1.Lines.Text работать
(он же именно Text пытался использовать)

А с ним вроде бы красивее получается (если конечно в длину
string-а поместимся :о) )

var
S: string;
begin
S := RichEdit1.Lines.Text;
if Length(S) > 0 then begin
OEMToChar(PChar(S), PChar(S));
RichEdit1.Lines.Text := S;
end;
end;


Mbo   (2002-01-31 07:04:00) [7]

ответ вытекает из вопроса
s := RichEdit1.Lines.Strings[i];
if s<>"" then ...


HDD   (2002-01-31 06:53:00) [8]

Люди добрые помогите пожалуйста!


HDD   (2002-01-31 02:56:00) [9]

Вот так вроде работает! Но если есть пустые строки в тексте! То опятьтакая же ошибка!


Андрей Сенченко   (2002-01-30 17:03:00) [10]

Извини, отлучался... Работать то работает, вот только видимогорезультата у Тебя не будет.
Попробуй поиграть вот с этим кодом и многое поймешь:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
s : string;
begin
for i:=0 to RichEdit1.Lines.Count - 1 do
begin
s := RichEdit1.Lines.Strings[0];
messageBox(0,pchar(s),pchar("do"),mb_ok);
CharToOem(PChar(s),PChar(s));
messageBox(0,pchar(s),pchar("posle"),mb_ok);
RichEdit1.Lines.Delete(0);
RichEdit1.Lines.Add(s);
end;


HDD   (2002-01-30 16:20:00) [11]

Пишет типа ошибка в kernel32 когда большой текст пытаешся перевести!
А когда маленький кусочек тогда просто вообще ничего не происходит!


Андрей Сенченко   (2002-01-30 16:16:00) [12]

В чем выражается "Не получается" ?


HDD   (2002-01-30 16:10:00) [13]

procedure TForm1.ToolButton1Click(Sender: TObject);
var
i: integer;
begin
for i:=0 to RichEdit1.Lines.Count - 1 do begin
CharToOem(PChar(RichEdit1.Lines.Strings[i]), PChar(RichEdit1.Lines.Strings[i]));
end;
end;
Пробую вот так! Не получается!


Андрей Сенченко   (2002-01-30 15:54:00) [14]

Потому что RichEdit1.Lines - это просто НАБОР СТРОК Твоего RichEdit. К каждой строке этого набора нужно доступаться по его индексу, а не по первому попавшемуся свойству нужного типа.
Сделай так:
RichEdit1.Lines.Strings[i]
где i - инджекс ( номер ) строки. Учти, что здесь нумерация с "0"


Андрей Сенченко   (2002-01-30 15:50:00) [15]

RichEdit1.Lines - это НАБОР СТРОК Твоего RichEdit-a. Фактически получается, что Ты пытаешься преобразовать неизвестно что.
Сделай по другому:
RichEdit1.Lines.Strings[i]
где i-номер строки. Учти, что нумерация здесь с "0"


HDD   (2002-01-30 15:29:00) [16]

Извините что добиваю своей тупостью, но что-то не могу нифига разобраться. Пробую вот так нифига!
CharToOEM(PChar(RichEdit1.Lines.Text), PChar(RichEdit1.Lines.Text));


Андрей Сенченко   (2002-01-30 14:30:00) [17]

Тебе же все сказали CharToOem, OemToChar
Набираешь, жмешь Ctrl-F1 и смотришь


HDD   (2002-01-30 13:59:00) [18]

Люди добрые помогите пожалуйста!


HDD   (2002-01-30 13:08:00) [19]

To Pasha
А по подробнее с примерами кода?


pasha_golub   (2002-01-30 11:58:00) [20]

CharToOem, OemToChar. Функции такие. Методов у самого Рича нет. Так что берешь цикл по строкам конвертируешь и обратно записываешь. 1 - из Винды в ДОС, 2 - наооборот. Больше информации в хелпе! Удачи


Наверх

Титульная страница Поиск, карта сайта Написать письмо