Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2009, 11:45   #1
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию Unicode в DOS (OEM)

Как известно в Delphi 2009 есть поддержка Юникода и переменны типа String сейчас в Юникоде.
В Delphi 7 такой код компилиться с успехом:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  N: PChar;
begin
  memo1.Lines.LoadFromFile('c:\file.txt');
  N := Memo1.Lines.GetText;
  ANSIToOem(N, N);
  Memo1.Lines.Text := StrPas(N);
end;
Но в дельфине 2009 никак не хочет. Так вот вопрос: Имеется TStringList, как его перевести в OEM кодировку?
FaTaL вне форума Ответить с цитированием
Старый 28.05.2009, 12:33   #2
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Попробуйте так
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
N: string;
begin
  memo1.Lines.LoadFromFile('c:\file.txt');
  N := Memo1.Lines.GetText;
  ANSIToOem(Pchar(N),Pchar(N));
  Memo1.Lines.Text := N;

end;
То есть через приведение типов: ANSIToOem(Pchar(N),Pchar(N));, так как там тип данных PAnsiChar
Если StringList использовать то можно так
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
N: string;
str: TStringList;
begin
  str:=TStringList.Create;
  memo1.Lines.LoadFromFile('c:\file.txt');
//  N := Memo1.Lines.GetText;
  str.Text:=Memo1.text;
  N:=str.Text;
//  ANSIToOem(Pchar(N),Pchar(N));
  ANSIToOem(Pchar(N),Pchar(N));
  Memo1.Text:=N;

end;
И так можно:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
N: PAnsiChar;
begin
  memo1.Lines.LoadFromFile('c:\file.txt');
  N := Memo1.Lines.GetText;
  ANSIToOem(N,N);
  Memo1.Text:=N;
end;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 28.05.2009 в 12:50.
ArtInt вне форума Ответить с цитированием
Старый 29.05.2009, 09:28   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Ни один из способов не работает в Юникоде в Дельфине 2009
Выдает ошибку
[DCC Error] Unit1.pas(32): E2010 Incompatible types: 'Char' and 'AnsiChar'
FaTaL вне форума Ответить с цитированием
Старый 29.05.2009, 11:35   #4
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

К сожалению, пока проверял на Дельфи 2006. Странно, почему выводит несовпадение типов для последнего мной приведенного примера, ведь там тип Pchar заменен на PAnsiChar, который удовлетворяет параметрам.
Кстати может используете технологию NET?
И даже данный пример не проходит???
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
    N: string;
begin
  memo1.Lines.LoadFromFile('c:\file.txt');
  N := Memo1.Lines.GetText;
  ANSIToOem(PAnsiChar(N),PAnsiChar(N));
  Memo1.Lines.Text := N;
end;
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 29.05.2009 в 11:44.
ArtInt вне форума Ответить с цитированием
Старый 29.05.2009, 13:54   #5
Evgeniy26
Форумчанин
 
Аватар для Evgeniy26
 
Регистрация: 29.05.2009
Сообщений: 384
По умолчанию

Если хотите разобраться с Unicode в Delphi 2009: http://torrents.ru/forum/viewtopic.php?t=1367596
Evgeniy26 вне форума Ответить с цитированием
Старый 29.05.2009, 14:49   #6
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

На Делфи 7 тоже всё идет, а вот на 2009 никак. Интересно если скопмилить DLL в семерке и потом вызвать её процедуру, которая обработает файл и сохранит его, из проги скомпиленной в 2009, нормально всё будет или нет?
Пишу под Win32.

З.Ы. Для .NET пишу на Delphi Prism.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Unicode Pedro Общие вопросы Delphi 8 13.03.2009 10:50
Unicode в indy9 Mixasik Работа с сетью в Delphi 3 25.08.2008 15:44
unicode и printf Legat Общие вопросы C/C++ 9 06.07.2008 13:41
Unicode }{UTPUU Общие вопросы Delphi 4 02.04.2007 15:21