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

Вниз

OemToChar не пашет в WinXP рус D6 ?   Найти похожие ветки 

 
blackman   (2003-01-23 09:43) [0]

Скомпилировал старую программу работавшую в WIN98 с функцией
OemToChar результаты поражают своей кривизной.
В чем может быть дело:
- моя криворукость
- неправильная установка XP
- ошибка D6
- ...


 
unknown helper device   (2003-01-23 10:26) [1]

Что значит "не пашет"?


 
blackman   (2003-01-23 10:37) [2]

Результат не "русский"


 
unknown helper device   (2003-01-23 10:41) [3]

А ИксПя русская? Какой язык установлен для не-юникодовых приложений? Если русский, всё должно (по идее) работать.


 
REA   (2003-01-23 10:42) [4]

OemToChar вроде устаревшая функция. AnsiOemToChar или что то вроде того. Или я путаю?


 
Игорь Шевченко   (2003-01-23 10:43) [5]

Прекрасно работает (XP Pro russian)


 
blackman   (2003-01-23 10:43) [6]

Путаешь. Все наоборот.


 
blackman   (2003-01-23 10:46) [7]

>Игорь Шевченко
Ничего не понимаю...
Эта программа и не только эта трудились под 98
Что ?


 
Reindeer Moss Eater   (2003-01-23 10:49) [8]

OemToChar никогда не конвертировала в Русский


 
Reindeer Moss Eater   (2003-01-23 10:49) [9]

Так же как и CharToOem


 
blackman   (2003-01-23 10:54) [10]

>Reindeer Moss Eater
Она конвертирует не в русский, а из Oem в Ansi и в том числе русские
Никогда не говори никогда не пробуя...


 
blackman   (2003-01-23 10:57) [11]

>unknown helper device
Русский конечно. Может перед перекодом раскладку переключить ?
Балдею...


 
Reindeer Moss Eater   (2003-01-23 11:03) [12]

blackman © (23.01.03 10:54)
Вникай в смысл сказанного. То что после вызова ты видишь русский текст, не говорит о том, что функция конвертит в русский.
А то что ты не видишь русский текст в XP говорит о том, что OEM набор символов у тебя не тот.


 
Игорь Шевченко   (2003-01-23 11:03) [13]

Код программы, языковые установки - в студию!


 
blackman   (2003-01-23 11:06) [14]

>Reindeer Moss Eater
Интересно. А я о чем спрашиваю ?
Понятно, что что то не то, но что ?
Набор символов не тот.
Повторяю еще раз стоит WINXP рус !!!


 
Reindeer Moss Eater   (2003-01-23 11:08) [15]

Тебе сказали причину по которой ты на видишь русский текст после вызова функции. Это OEM набор символов в твоей XP такой.
Будь она хоть трижды русская


 
blackman   (2003-01-23 11:11) [16]

>Игорь Шевченко
memo1.lines.loadfromfile(opendialog1.filename);
procedure DosToWin;
var Src, Str:PChar;
begin
Src := Form1.Memo1.Lines.GetText;
OemToChar(Src, Str);
Form1.Memo1.clear;
Form1.Memo1.Lines.Text:= StrPas(Str);
end;
Ну и что тут... ?


 
Reindeer Moss Eater   (2003-01-23 11:13) [17]

А где выделение памяти под Str?


 
Игорь Шевченко   (2003-01-23 11:13) [18]

OemToChar (Src, Src)

ДНК поправить (уж не обижайся)


 
blackman   (2003-01-23 11:20) [19]

>Игорь Шевченко
OemToChar(Src, Str);
!!!


 
Reindeer Moss Eater   (2003-01-23 11:21) [20]

А где выделение памяти под Str?



 
blackman   (2003-01-23 11:23) [21]

>Reindeer Moss Eater
Аналогично:
function NDosToWin(St:string):string;
var Ch:PChar;
begin
Ch:=StrAlloc(Length(St)+1);
OemToAnsi(PChar(St),Ch);
Result:=Ch;
StrDispose(Ch)
end;
???


 
Reindeer Moss Eater   (2003-01-23 11:25) [22]

Ты нас убеждал, что код приведенный blackman © (23.01.03 11:11) работает на win9x.

Он с ошибкой

Что ты хочешь услышать еще?


 
Игорь Шевченко   (2003-01-23 11:25) [23]

Parameters

lpszSrc

Points to a null-terminated string of characters from the OEM-defined character set.

lpszDst

Points to the buffer for the translated string. If the OemToChar function is being used as an ANSI function, the string can be translated in place by setting the lpszDst parameter to the same address as the lpszSrc parameter. This cannot be done if OemToChar is being used as a wide-character function.

Неужели трудно TFM лишний раз почитать ?
Или использвать OemToCharBuff.

Проблема не в XP. Проблема в коде.


 
blackman   (2003-01-23 11:37) [24]

>Игорь Шевченко
Указатели на буфер для переведенной строки. Если функция OemToChar используется как функция ANSI, строка может быть переведена в месте, устанавливая lpszDst параметр для того же самого адреса как lpszSrc параметр. Это не может быть сделано, если OemToChar используется как wide-character функция.
Нет !!!
Утверждаю, что работало в Win98!
Видимо Вы не знаете в чем дело. Жаль. Буду копать сам


 
Игорь Шевченко   (2003-01-23 11:45) [25]


> Утверждаю, что работало в Win98!


Повезло.

Я все-таки рекомендую обратиться к функции OemToCharBuff


 
Reindeer Moss Eater   (2003-01-23 11:48) [26]

Это не может быть сделано, если OemToChar используется как wide-character функция.

Нет !!!
Утверждаю, что работало в Win98!
Видимо Вы не знаете в чем дело. Жаль. Буду копать сам


А там нет поддержки Unicode :)



 
Separator   (2003-01-23 11:58) [27]


function DosToWin(St:string):string;
var
Ch: PChar;

begin
Ch:=StrAlloc(Length(St)+1);
OemToChar(PChar(St),Ch);
Result:= Ch;
StrDispose(Ch)
end;

Код полностью рабочий, только надо делать ручную проверку, чтоб на вход подавался текстовый файл в OEM кодировке и все


 
blackman   (2003-01-23 12:02) [28]

>Separator
Пробовал и не помогает...


 
Anatoly Podgoretsky   (2003-01-23 12:15) [29]

Bundesgrenzschutz © (23.01.03 04:05)
Первый и второй пункты твоего перечня причин, а что происходит тебе уже объяснили,


 
blackman   (2003-01-23 12:37) [30]

>Anatoly Podgoretsky
Тогда надо Вам несколько почистить Ваш FAQ
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988619974&n=19
- Эта версия работает под любым Delphi.
(Начиная с Delphi 2, это можно записать короче с использованием AnsiToOem и OemToAnsi.)
Здесь все просто...
Спасибо!


 
Separator   (2003-01-23 12:39) [31]

Пошарься в настройках WinXP


 
Игорь Шевченко   (2003-01-23 12:39) [32]

blackman © (23.01.03 12:37)

В FAQ все правильно написано...


 
blackman   (2003-01-23 12:44) [33]

>Игорь Шевченко
Если правильно, но не работает, то ?
>Separator
Да уж излазил все.
Самое смешное, что перенос проги на машины с 98 приводит к ее полной работоспособности ...
Ладно, спасибо всем и персонально Anatoly Podgoretsky ©
за
Bundesgrenzschutz
Буду искать в чем дело, а скорее всего просто напишу на С и вклею в Delphi.


 
Reindeer Moss Eater   (2003-01-23 12:49) [34]

А на C будет все точно так же


 
Игорь Шевченко   (2003-01-23 12:52) [35]

blackman © (23.01.03 12:44)
Но весь твой код от кода в FAQ несколько отличается, не так ли ?


 
Anatoly Podgoretsky   (2003-01-23 13:07) [36]

blackman © (23.01.03 12:37)
Спасибо, но ты мне продашь этот FAQ, что бы он стал моим, полный доступ до сервера.
Но я прежде чем пользоваться рецептом из FAQ смотрю описание функции в хелпе.

Эти функции не их Дельфи, а из WinApi так что у тебя будет тот же самый результат.


 
blackman   (2003-01-23 13:09) [37]

>Игорь Шевченко
Пробовал и из FAQ.
>Reindeer Moss Eater
Это ты не прав. Просто сделаю свою таблицу и грузить буду не через load от Memo
видимо дело в этом.
Что касается установки WIN это Вы не правы!
Я ее ставлю на разные машины чуть ли ни каждый день.
Работа такая...
Да ладно. Спасибо.
Буду программу писать


 
Reindeer Moss Eater   (2003-01-23 13:12) [38]

>Reindeer Moss Eater
Это ты не прав. Просто сделаю свою таблицу и грузить буду не через load от Memo

Тебе говорили про использование CharToOem. Можно использовать эту функцию в D, в С, С++, в VB, в скрипте Вайза в конце концов!
Результат будет одинаков с точностью до сотых долей бита.



 
blackman   (2003-01-23 13:42) [39]

А ларчик просто открывался !!!!!!!!!!!!!!!!!!!!!!
Сосед прогуливавшияся мимо просто поменял
для memo OEMConvert в True.
И все дальнейшие действия по перекоду...
Пошутить он хотел. Убью гада!!!


 
Игорь Шевченко   (2003-01-23 14:19) [40]

А наездов-то было...и на Delphi и на XP... :-)))



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

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

Наверх





Память: 0.53 MB
Время: 0.012 c
14-5268
Junior
2003-01-17 02:40
2003.02.03
Посоветуйте библиотечку NetBios


3-4718
dtm
2003-01-15 14:29
2003.02.03
Не видно выбранного значения в lookup-поле при выборе


3-4787
stasSSW
2003-01-16 15:49
2003.02.03
БД, Win API


14-5139
Le!
2003-01-10 08:36
2003.02.03
Люди посоветуйте!


14-5140
ledzzz
2003-01-17 12:49
2003.02.03
barcode компоненты для delhi5





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский