Кодировка из Dos в Win

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Да ребяты, расфлудились-то вопрос то легкий и древний.
Вариант 1

Код: Выделить всё

function DosToWin(St: string): string;
var
  Ch: PChar;
begin
  Ch := StrAlloc(Length(St) + 1);
  OemToAnsi(PChar(St), Ch);
  Result := Ch;
  StrDispose(Ch)
end;

function WinToDos(St: string): string;
var
  Ch: PChar;
begin
  Ch := StrAlloc(Length(St) + 1);
  AnsiToOem(PChar(St), Ch);
  Result := Ch;
  StrDispose(Ch)
end;
Вар2

Код: Выделить всё

procedure WinToDos;
var
  Src, Str: PChar;
begin
  Src := Memo1.Lines.GetText; 
  CharToOem(Src, Str); 
  Memo2.Lines.Text := StrPas(Str);
end;

procedure DosToWin;
var
  Src, Str: PChar;
begin
  Src := Memo1.Lines.GetText; 
  OemToChar(Src, Str); 
  Memo2.Lines.Text := StrPas(Str);
end;
:D
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Нашел в инете образец применения этой оперпции,

procedure TForm1.Button1Click(Sender: TObject);
var
Src, Str: PChar;
Begin
Src := Memo1.Lines.GetText; //Берем текст из TMemo как тип PChar
CharToOem(Src, Str); //API функция для перевода текста
Memo2.Lines.Text := StrPas(Str);//Записываем назад
end;
Но при выполнении прога выпадает в ошибку Access violation at address 77D4ADC7 in module 'user32.dll'. Write to address
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Огромное СПАСИБО!!! Я уже лоб расшиб :) Первый вариант просто отличный!!! Без всяких заморочек :)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Давай весь пример с текстом..
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

по подробней, пример конкретно чего тебе нужен, самой проги или момент где я использую эту функцию???

Кстати, отличный коневертер получился ;) Для организаций в бухгалтерии очень нужная вешь :)
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Всю не надо, можешь маленькую демочку написать, с ней и разберемся где косяк...
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

&quot писал(а):Src, Str: PChar;
во не понимаю, мало букв чтоли? зачем называть переменную по имени функции Str? (это так, крик души)
Изображение
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

хороший крик
Ответить