![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
почему в консольном приложении русские буквы выводятся абракадабр
lavgirls © (2008-07-27 22:22:00)Вопрос такой почему в консольном приложении русские буквы выводятся абракадаброй. на моем бывшем компьютере помоему все нормально было
Anatoly Podgoretsky (2008-07-28 15:40:00) [1]> Тын-Дын (28.07.2008 15:35:19) [19]
Ну еще бы не помнить такое, когда неприятно было, что данные портились непонятно почему :-)
Тын-Дын (2008-07-28 15:35:00) [2]
> Anatoly Podgoretsky © (28.07.08 15:20) [17]
> > Тын-Дын (28.07.2008 14:47:16) [16]Зато я помню, я все
> помню.
Вот память!
Anatoly Podgoretsky (2008-07-28 15:22:00) [3]Тонкостей только две.
1. побочное изменение оригинал
2. и AV при нулевой длине.
Anatoly Podgoretsky (2008-07-28 15:20:00) [4]> Тын-Дын (28.07.2008 14:47:16) [16]
Зато я помню, я все помню.
Тын-Дын (2008-07-28 14:47:00) [5]
> Anatoly Podgoretsky © (28.07.08 14:33) [15]
Может быть. И сам же забыл давно.
Anatoly Podgoretsky (2008-07-28 14:33:00) [6]> Тын-Дын (28.07.2008 14:32:14) [14]
Кажется это ты ткнул в этот побочный эффект несколько лет назад?
Тын-Дын (2008-07-28 14:32:00) [7]
> Loginov Dmitry © (28.07.08 13:38) [13]
> > Пока не вижу, что правильнее-)UniqueString(S) сделай
> Anatoly Podgoretsky © (28.07.08 01:07) [7]
Теперь вижу-)
Надо же, как можно наткнуться неожиданно на грабли.
Loginov Dmitry (2008-07-28 13:38:00) [8]
> Пока не вижу, что правильнее-)
UniqueString(S) сделай
Slym (2008-07-28 10:37:00) [9]brother © (28.07.08 10:26) [11]
при частоте в гигагерцы длительность операции в секундах не измеряют...
в тиках посчитай... 1. латентность не нулевая, 2. на многоCPU системах может блокироваться память
brother (2008-07-28 10:26:00) [10]> Работа с памятью не такая быстраю как многим кажется
даже если текст будет метровый, это будет махом! поверь ;)
Slym (2008-07-28 10:25:00) [11]вариант Тын-Дын © (28.07.08 0:41) [5]на псевдокоде:
Выделить память под Result
Скопировать в Result содержимое S
Перекодировать из Result в Result
вариант Amoeba © (28.07.08 1:01) [6]на псевдокоде:
Выделить память под Result
Перекодировать из S в Result
Как видим на 1 операцию меньше, а при "увиличении" на 1 операцию ЧТЕНИЯ памяти и 1 операцию ЗАПИСИ в память. Работа с памятью не такая быстраю как многим кажется
Тын-Дын (2008-07-28 09:24:00) [12]
> Anatoly Podgoretsky © (28.07.08 01:07) [7]
> Тын-Дын © (28.07.08 00:41) [5] Побочный эффект - изменение
> S
У меня не меняется.
function W2D(const s: String): String;
begin
Result := s;
if Result<>'' then CharToOem(PChar(Result),PChar(Result));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s,s1: String;
begin
s := 'абвг';
s1 := W2D(s);
Memo1.Lines.Add(s);
Memo1.Lines.Add(s1);
end;
> Loginov Dmitry © (28.07.08 08:03) [8]
> > тьфу, не то написал.[4] правильнее было :))
Пока не вижу, что правильнее-)
Loginov Dmitry (2008-07-28 08:03:00) [13]> тьфу, не то написал.
[4] правильнее было :))
Anatoly Podgoretsky (2008-07-28 01:07:00) [14]Тын-Дын © (28.07.08 00:41) [5]
Побочный эффект - изменение S
Amoeba (2008-07-28 01:01:00) [15]Код из RxLib:
function StrToOem(const AnsiStr: string): string;
begin
SetLength(Result, Length(AnsiStr));
if Length(Result) > 0 then
CharToOemBuff(PChar(AnsiStr), PChar(Result), Length(Result));
end;
Тын-Дын (2008-07-28 00:41:00) [16]тьфу, не то написал.
function W2D(const s: String): String;
begin
Result := s;
if Result<>'' then CharToOem(PChar(Result),PChar(Result));
end;
Тын-Дын (2008-07-27 23:54:00) [17]
> {RASkov} © (27.07.08 22:27) [2]
Я бы немного упростил:
function W2D(const s: String): String;
begin
Result := s;
if Result='' then Exit;
CharToOem(@Result[1],@Result[1]);
end;
lavgirls (2008-07-27 22:35:00) [18]спасибо
{RASkov} (2008-07-27 22:27:00) [19]
program Project1;
{$APPTYPE CONSOLE}
uses Windows;
function StrToRus(const AStr: String): String;
begin
Result:='';
if Length(AStr)>0 then begin
SetLength(Result, Length(AStr));
CharToOem(PChar(AStr), PChar(Result));
end;
end;
begin
Writeln(StrToRus('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧЩШЫЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчщшъ ыьэюя'));
Readln;
end.
{RASkov} (2008-07-27 22:25:00) [20]> [0] lavgirls (27.07.08 22:22)
другая кодовая страница