Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.09.14;
Скачать: CL | DM;

Вниз

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

 
programmer90   (2008-07-21 00:58) [0]

Ещё раз приветствую всех.Опять я со своим проектом. Такая проблема: При выводе данных русскими буквами во Free Pascal-e всё работает нормально, то есть если у нас опреатор writeln("Привет"); то вывод будет: Привет, но при запуске программы вне оболочки Free Pascal(ShellExecute(handle,"open","cmd"," /c c:\fpc\2.2.0\bin\i386-win32\fpc d:\file.pas   && cls && d:\file.exe  && pause",nil,SW_Show);) слово привет он выводит какими-то закорючками, короче говоря кодировака не та. . Что можно сделать чтобы вывод был нормальным,то есть нормально выводил на русском.
Спасибо.


 
Dmitry S ©   (2008-07-21 09:42) [1]

AnsiToOemBuff


 
Anatoly Podgoretsky ©   (2008-07-21 09:59) [2]

> Dmitry S  (21.07.2008 9:42:01)  [1]

>>> For compatibility with 16-bit versions of Windows


 
Dmitry S ©   (2008-07-21 10:02) [3]


> Anatoly Podgoretsky ©

и что?
CharToOemBuff


 
Milk   (2008-07-21 11:08) [4]

ShellExecute(handle,"open","cmd"," /c c:\fpc\2.2.0\bin\i386-win32\fpc d:\file.pas   && cls && d:\file.exe  && pause",nil,SW_Show);
Я не вижу здесь вывода на консоль:(
Ну, а я для консольных приложений (очень давно, возможно и не рационально) написАл функцию.

var RusStr: String;

...

function ToRussia(ss: string): String;
begin
System.SetLength(NewStr, Length(ss));
CharToOem(PChar(ss), PChar(RusStr));
Result:= PChar(RusStr);
end;


и далее Writeln(ToRussia("Привет");


 
brother ©   (2008-07-21 11:09) [5]

название функции улыбнуло)
зы torussian :)


 
programmer90   (2008-07-21 11:11) [6]


> и что?CharToOemBuff

Извините, но как я это должен написать и где, прямо перед выраж. или как? на простом примере объясните плиз.


 
Milk   (2008-07-21 11:13) [7]

System.SetLength(NewStr, Length(ss));
понимать как RusStr:(


 
Anatoly Podgoretsky ©   (2008-07-21 11:17) [8]

> Dmitry S  (21.07.2008 10:02:03)  [3]

А вот теперь ничего, ну может не CharToOemBuff, а CharToOem


 
Anatoly Podgoretsky ©   (2008-07-21 11:27) [9]

> Milk  (21.07.2008 11:08:04)  [4]

Данная функция не ToRussia, а ANSI/Unicode в OEM
И теоритически конкретно с русским могут быть серьезные проблемы, именно  закорючкит (rhzrjpz,hs).


 
Milk   (2008-07-21 11:36) [10]


> Anatoly Podgoretsky ©   (21.07.08 11:27) [9]

> Данная функция не ToRussia, а ANSI/Unicode в OEM

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


 
Anatoly Podgoretsky ©   (2008-07-21 11:46) [11]

> Milk  (21.07.2008 11:36:10)  [10]

Ну я тоже посоветую пользоваться именно ею в заведомо известном окружение, но не риску гарантировать на неизввестном компьютере.


 
programmer90   (2008-07-21 12:26) [12]


> ShellExecute(handle,"open","cmd"," /c c:\fpc\2.2.0\bin\i386-
> win32\fpc d:\file.pas   && cls && d:\file.exe  && pause",
> nil,SW_Show);
> Я не вижу здесь вывода на консоль:(

Код программы находиться в Мемо, после чего содерживое мемо идет в файл, а после этого этот файл компилируется, и затем запускается...
В delphi 2007 for .NET - PChar вообще не хочет работать...
> var RusStr: String;...function ToRussia(ss: string): String;
> begin System.SetLength(NewStr, Length(ss)); CharToOem(PChar(ss),
>  PChar(RusStr)); Result:= PChar(RusStr);end;
Это вроде как написал...
Вы будете смеяться, ситуаця настолько непонятная что я даже пытался записать в обработчик события ОнБаттонКлЫк Writeln(ToRussia("Привет");  ессесно  не работает:)
Значит нужно организовать консоль? Как помогите сделать ету фигню?


 
Smile   (2008-07-21 12:34) [13]

> programmer90   (21.07.08 12:26) [12]


> Код программы находиться в Мемо

А как поведет себя твоя программа, если в Мемо будет какая-нибудь "чепухня"?
Здесь уже видимо будет не до кодировок. Попробуй изменить подход, или, во всяком случае, конкретизируй свою проблему


 
Anatoly Podgoretsky ©   (2008-07-21 13:45) [14]

> programmer90  (21.07.2008 12:26:12)  [12]

> В delphi 2007 for .NET - PChar вообще не хочет работать...

И правильно, чего такие опасные указатели не видали в NET - буфер оверфлоу устраивать?
Для вас же стараются, делают надежные системы, а вы все стараетесь разрушить, откуда то берете старье, из Win16 - хватит.


 
programmer90   (2008-07-21 18:46) [15]


> А как поведет себя твоя программа, если в Мемо будет какая-
> нибудь "чепухня"?

Если будет  "чепухня" соответсвенно копилятор выдаст ошибку, ну я вывод перенаправлю это через коммандную строку в файл после этого в соответ. с ошибкой выведу сообщение на языке который выбран пользователем(три языка)...
Уважаемый Anatoly Podgoretsky ©   (21.07.08 13:45) [14], вообще можно что-нибудь сделать?


 
ketmar ©   (2008-07-22 18:14) [16]

>[15] programmer90 (2008-07-21 18:46:00)
>вообще можно что-нибудь сделать?

сначала учиться, потом писать, а не наоборот? говорят, очень помогает.

---
Do what thou wilt shall be the whole of the Law.


 
programmer90   (2008-07-23 09:57) [17]

ketmar ©   (22.07.08 18:14) [16] спасибо за совет, очень помогли...


 
ketmar ©   (2008-07-23 19:20) [18]

>[17] programmer90 (2008-07-23 09:57:00)
тогда чего ты ещё здесь? учись иди.

---
Do what thou wilt shall be the whole of the Law.



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

Текущий архив: 2008.09.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
2-1217424279
@!!ex
2008-07-30 17:24
2008.09.14
Рабочая папка процесса.


11-1193144413
Виктор007
2007-10-23 17:00
2008.09.14
Помогите создать кнопку


15-1216644223
oldman
2008-07-21 16:43
2008.09.14
Банковский кредитный кризис (как будто опрос)


15-1216094479
123-ий
2008-07-15 08:01
2008.09.14
Шлюз Интернета


3-1206004854
Alexey
2008-03-20 12:20
2008.09.14
Работа с таблицами Fox Pro в Delphi 7