![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите пожалуйста! [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 - наооборот. Больше информации в хелпе! Удачи