Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];

Вниз

почему в консольном приложении русские буквы выводятся абракадабр   Найти похожие ветки 

 
lavgirls   (2008-07-27 22:22) [0]

Вопрос такой почему в консольном приложении русские буквы выводятся абракадаброй. на моем бывшем компьютере помоему все нормально было


 
{RASkov} ©   (2008-07-27 22:25) [1]

> [0] lavgirls   (27.07.08 22:22)

другая кодовая страница


 
{RASkov} ©   (2008-07-27 22:27) [2]

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.


 
lavgirls   (2008-07-27 22:35) [3]

спасибо


 
Тын-Дын ©   (2008-07-27 23:54) [4]


> {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;


 
Тын-Дын ©   (2008-07-28 00:41) [5]

тьфу, не то написал.

function W2D(const s: String): String;
begin
  Result := s;
  if Result<>"" then CharToOem(PChar(Result),PChar(Result));
end;


 
Amoeba ©   (2008-07-28 01:01) [6]

Код из 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;


 
Anatoly Podgoretsky ©   (2008-07-28 01:07) [7]

Тын-Дын ©   (28.07.08 00:41) [5]
Побочный эффект - изменение S


 
Loginov Dmitry ©   (2008-07-28 08:03) [8]

> тьфу, не то написал.


[4] правильнее было :))


 
Тын-Дын ©   (2008-07-28 09:24) [9]


> 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] правильнее было :))


Пока не вижу, что правильнее-)


 
Slym ©   (2008-07-28 10:25) [10]

вариант Тын-Дын ©   (28.07.08 0:41) [5] на псевдокоде:
Выделить память под Result
Скопировать в Result содержимое S
Перекодировать из Result в Result

вариант Amoeba ©   (28.07.08 1:01) [6] на псевдокоде:
Выделить память под Result
Перекодировать из S в Result

Как видим на 1 операцию меньше, а при "увиличении" на 1 операцию ЧТЕНИЯ памяти и 1 операцию ЗАПИСИ в память. Работа с памятью не такая быстраю как многим кажется


 
brother ©   (2008-07-28 10:26) [11]

> Работа с памятью не такая быстраю как многим кажется

даже если текст будет метровый, это будет махом! поверь ;)


 
Slym ©   (2008-07-28 10:37) [12]

brother ©   (28.07.08 10:26) [11]
при частоте в гигагерцы длительность операции в секундах не измеряют...
в тиках посчитай... 1. латентность не нулевая, 2. на многоCPU системах может блокироваться память


 
Loginov Dmitry ©   (2008-07-28 13:38) [13]


> Пока не вижу, что правильнее-)


UniqueString(S) сделай


 
Тын-Дын ©   (2008-07-28 14:32) [14]


> Loginov Dmitry ©   (28.07.08 13:38) [13]
> > Пока не вижу, что правильнее-)UniqueString(S) сделай


> Anatoly Podgoretsky ©   (28.07.08 01:07) [7]


Теперь вижу-)
Надо же, как можно наткнуться неожиданно на грабли.


 
Anatoly Podgoretsky ©   (2008-07-28 14:33) [15]

> Тын-Дын  (28.07.2008 14:32:14)  [14]

Кажется это ты ткнул в этот побочный эффект несколько лет назад?


 
Тын-Дын ©   (2008-07-28 14:47) [16]


> Anatoly Podgoretsky ©   (28.07.08 14:33) [15]


Может быть. И сам же забыл давно.


 
Anatoly Podgoretsky ©   (2008-07-28 15:20) [17]

> Тын-Дын  (28.07.2008 14:47:16)  [16]

Зато я помню, я все помню.


 
Anatoly Podgoretsky ©   (2008-07-28 15:22) [18]

Тонкостей только две.

1. побочное изменение оригинал
2. и AV при нулевой длине.


 
Тын-Дын ©   (2008-07-28 15:35) [19]


> Anatoly Podgoretsky ©   (28.07.08 15:20) [17]
> > Тын-Дын  (28.07.2008 14:47:16)  [16]Зато я помню, я все
> помню.


Вот память!


 
Anatoly Podgoretsky ©   (2008-07-28 15:40) [20]

> Тын-Дын  (28.07.2008 15:35:19)  [19]

Ну еще бы не помнить такое, когда неприятно было, что данные портились непонятно почему :-)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.09.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.005 c
2-1217279177
Jolik
2008-07-29 01:06
2008.09.07
Использовать TForm как TFrame


2-1217151979
ванъка
2008-07-27 13:46
2008.09.07
TImageList


3-1205222693
Julia
2008-03-11 11:04
2008.09.07
HalcyonDataSet


2-1217409396
Vlad
2008-07-30 13:16
2008.09.07
Поиск и замена в Excel через OLE


15-1216204880
DVM
2008-07-16 14:41
2008.09.07
Вопрос к тем кто живет на Украине или ездил туда недавно.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский