Страница 2 из 2

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

Добавлено: 06 дек 2007, 08:38
Duncon
Да ребяты, расфлудились-то вопрос то легкий и древний.
Вариант 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

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

Добавлено: 06 дек 2007, 17:07
Dr_Grizzly
Нашел в инете образец применения этой оперпции,

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

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

Добавлено: 06 дек 2007, 17:15
Dr_Grizzly
Огромное СПАСИБО!!! Я уже лоб расшиб :) Первый вариант просто отличный!!! Без всяких заморочек :)

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

Добавлено: 06 дек 2007, 17:16
Duncon
Давай весь пример с текстом..

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

Добавлено: 07 дек 2007, 17:49
Dr_Grizzly
по подробней, пример конкретно чего тебе нужен, самой проги или момент где я использую эту функцию???

Кстати, отличный коневертер получился ;) Для организаций в бухгалтерии очень нужная вешь :)

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

Добавлено: 07 дек 2007, 22:54
Duncon
Всю не надо, можешь маленькую демочку написать, с ней и разберемся где косяк...

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

Добавлено: 11 дек 2007, 11:25
Игорь Акопян
&quot писал(а):Src, Str: PChar;
во не понимаю, мало букв чтоли? зачем называть переменную по имени функции Str? (это так, крик души)

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

Добавлено: 11 дек 2007, 14:57
Duncon
хороший крик