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

Вниз

AnsiToOem, CharToOem   Найти похожие ветки 

 
programmer90   (2009-03-09 21:38) [0]

Здравствуйте!
В Связи с апгдейдом проекта на Delphi 2009 возникли некоторые проблемы, как известно это дельфя поддерживает юникод.
Использую функцию AnsiToOem  итам ошибка E2010 мол типы не совпадают (в параметрах функции).т.е AnsiString и String не одно и то же.
На сайте поискал нашел то что надо, но для старых версии дельфи.
В немного подправил , компиль идет, правильного резалта нет(((

function ConvertAnsiToOem(const S : string) : string;
{$IFNDEF WIN32}
var
 Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
{$IFDEF WIN32}
 SetLength(Result, Length(S));
 if Length(Result) > 0 then
   //CharToOem (PChar(S), PChar(Result));
  CharToOem (PChar(S), PAnsiChar(Result));
{$ELSE}
 if Length(Result) > 0 then
 begin
   CharToOem(StrPCopy(Source, S), Dest);
   Result := StrPas(Dest);
 end;
{$ENDIF}
end; { ConvertAnsiToOem }

function ConvertOemToAnsi(const S : string) : string;
{$IFNDEF WIN32}
var
 Source, Dest : array[0..255] of Char;
{$ENDIF}
begin
{$IFDEF WIN32}
 SetLength(Result, Length(S));
 Utf8ToAnsi(s);
 if Length(Result) > 0 then
   //OemToChar(PChar(S), PChar(Result));
   OemToChar(PAnsiChar(S), PChar(Result));
{$ELSE}
 if Length(Result) > 0 then
 begin
   OemToChar(StrPCopy(Source, S), Dest);
   Result := StrPas(Dest);
 end;
{$ENDIF}
end;
{ ConvertOemToAnsi }


Да и ещё, вызов такой:
ConvertAnsiToOem( Memo[AdvPageControl1.ActivePageIndex].Lines.Text);
Пробовал CharToOem
Расчитываю на помощь мастеров!


 
Eraser ©   (2009-03-09 23:37) [1]

>
>
> [0] programmer90   (09.03.09 21:38)


> Использую функцию AnsiToOem  

а в чем сложности? поведение у функций стандартное. CharToOem теперь работает с юникодовой строкой, если нужно анси - используйте CharToOemA.


 
programmer90   (2009-03-10 00:28) [2]

Вот так писал бы на пред версиях:

function WinToDos(str: string): string;
begin
Result := str;
CharToOemA(PChar(Result), PChar(Result));
end;

я nfr понимаю что надо просто вместо String -AnsiString;
PChar -PAnsiChar?
а вот так на новой :

function WinToDos(str: ansistring): ansistring;
begin
Result := str;
CharToOemA(PAnsiChar(Result), PAnsiChar(Result));
end;

Сложность в том всё равно кракозябры выводит...


 
programmer90   (2009-03-10 01:00) [3]

Код напишите плизззз


 
Германн ©   (2009-03-10 01:05) [4]


> programmer90   (10.03.09 01:00) [3]
>
> Код напишите плизззз

Вот пусть код тебе пишет тот, кто заставил тебя перейти на Д2009.
А ещё лучше будет, если сам во всём этом разберёшься.


 
Eraser ©   (2009-03-10 01:32) [5]

> Source, Dest : array[0..255] of Char;

вот это почитай
http://edn.embarcadero.com/article/38446
http://edn.embarcadero.com/article/38582
http://edn.embarcadero.com/article/38703


 
programmer90   (2009-03-10 23:36) [6]

за ссыль спасибо, очень интересно, но всё  правильно сделал только не работает(((


 
programmer90   (2009-03-10 23:43) [7]


> Вот пусть код тебе пишет тот, кто заставил тебя перейти
> на Д2009.А ещё лучше будет, если сам во всём этом разберёшься.
>

никто не засталял меня перейти, не получится хрен сним, вернусь обратно в 2007 -ой...
Там элементарно типы меняешь и всё, есть какой-то нюанс кот я не могу найти,  просто я хочу на двести процентов уверен, чтобы искать этот нюанс
Думаю вот это правильно:
function WinToDos(str: ansistring): ansistring;
begin
Result := str;
CharToOemA(PAnsiChar(Result), PAnsiChar(Result));
end;

в 4-ех местах надо поменять и вот тебе апгрейд , разве не так?



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

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

Наверх





Память: 0.47 MB
Время: 0.006 c
2-1236506534
salexn
2009-03-08 13:02
2009.04.26
Получить список всех НЕ-PUBLISHED методов


2-1236664136
AIK
2009-03-10 08:48
2009.04.26
Access Violation


2-1236634530
Дмитрий Белькевич
2009-03-10 00:35
2009.04.26
Как правильнее закрывать приложение? App.Terminate или Close


2-1237296025
LLL
2009-03-17 16:20
2009.04.26
TListView. Показать нужную строку.


6-1199630362
WebSQLNeederr
2008-01-06 17:39
2009.04.26
отключить в ТВебБроузер звук щелчка при переходе по линку





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