Форум: "Прочее";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
ВнизОпять проблемы с кодировкой. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 2.717 c