Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизПреобразование DOS -> Win Найти похожие ветки
← →
Tornado © (2004-04-06 13:04) [0]Загружаю в Memo текстовой досовский файл, отображается русский текст естессено крякозябликами. Вопрос как преобразовать чтобы нормально отображалось? Спасибо.
← →
Тимохов © (2004-04-06 13:06) [1]найди в потрепаться топик "двадцать вопросов", там будет ответ.
← →
Андрей Сенченко © (2004-04-06 13:07) [2]Function WinToDos (stWin : string) : string;
var
stDOS : pchar;
begin
getmem(stDOS,1048);
CharToOem(pchar(stWIN),stDOS);
WinToDos := string(stDOS);
freemem(stDOS);
end;
Function DosToWin (stDOS : string) : string;
var
stWIN : pchar;
begin
getmem(stWIN,1048);
OemToChar(pchar(stDOS),stWIN);
DosToWin := string(stWIN);
freemem(stWIN);
end;
← →
Anatoly Podgoretsky © (2004-04-06 13:07) [3]OEM_CHARSET
← →
KSergey © (2004-04-06 13:12) [4]> Андрей Сенченко © (06.04.04 13:07)
Предложу способ без выделения спец. буфера:
function WinToDosStr (const AWinStr: String): String;
begin
if Length(AWinStr) > 0 then // для пустых строк ф-ция CharToOEM дает ошибку
begin
SetLength (Result, Length(AWinStr));
CharToOEM (PChar(AWinStr), PChar(Result));
end;
end;
Ну и обратная конвертилка - в том же духе
← →
Андрей Сенченко © (2004-04-06 13:21) [5]KSergey © (06.04.04 13:12) [4]
CharToOEM (PChar(AWinStr), PChar(Result));
Было обсуждение пары моментов, при которых подобное обращение может выбить по AV.
Лично мне симпатичнее выделять на долю секунды нужное количество памяти
← →
KSergey © (2004-04-06 13:24) [6]А нельзя ли эти моменты озвучить? Что-то я пропустил...
← →
Андрей Сенченко © (2004-04-06 13:29) [7]KSergey © (06.04.04 13:24) [6]
Не сохранил я ту ветку к сожалению ... можно в архивах порыться - в середине февраля по-моему было обсуждение.
← →
KSergey © (2004-04-06 13:30) [8]Т.е. прмиерно тоже не запомнилось?
Жаль...
← →
Андрей Сенченко © (2004-04-06 13:43) [9]Не стал тогда вникать, думал вернусь - сохраню. Базовых знаний не хватает чтобы вникнуть сразу сразу без дополнительного лазанья по книжкам.
По-моему обсуждение касалось того, что указатель может потеряться вне адресного пространства данного процесса. Но гарантированнно сказать не могу, ламер потому что :)
← →
Anatoly Podgoretsky © (2004-04-06 13:44) [10]Можно, но только зачем вообще самому перекодировать, решение без перекодировки в [3] только желательно моноширинный труе тайп шрифт, поскольку речь про ДОС
← →
panov © (2004-04-06 14:09) [11]>Андрей Сенченко © (06.04.04 13:43) [9]
AV будет в случае передачи в качестве параметра пустой строки.
← →
Tornado © (2004-04-06 15:10) [12]OEM_CHARSET не помогает...вот как выглядит фраза (в ДОСе) "Уведомление от 01.04.04 13:18 о прочтении сообщения", а так в memo где font.charset := OEM_CHARSET :
"?_¤R¬<_-?_ R? 01.04.04 13:18 R ??R??_-?? ?RR??_-??
← →
Андрей Сенченко © (2004-04-06 15:44) [13]Пошукал по архивам, выложил парочку
http://www.sharan.nm.ru/Delphi/main72.html
http://www.sharan.nm.ru/Delphi/main260.html
← →
KSergey © (2004-04-06 15:52) [14]> [10] Anatoly Podgoretsky © (06.04.04 13:44)
> Можно, но только зачем вообще самому перекодировать, решение
> без перекодировки в [3] только желательно моноширинный труе
> тайп шрифт, поскольку речь про ДОС
По заданному вопросу - да (хотя автор и не верит и, надо признать, я не совсем ему не верю)
А вот в разрезе поднятой проблемы конвертации?
> [11] panov © (06.04.04 14:09)
> AV будет в случае передачи в качестве параметра пустой строки.
Дык для этого и проверяем ;) см. [4] KSergey © (06.04.04 13:12)
← →
Андрей Сенченко © (2004-04-06 15:52) [15]Tornado © (06.04.04 15:10) [12]
OEM_CHARSET не помогает...
Не мучайся. Возьми готовую функцию от KSergey © (06.04.04 13:12) [4] или мою Андрей Сенченко © (06.04.04 13:07) [2]
← →
Anatoly Podgoretsky © (2004-04-06 16:08) [16]Это может означать лишь одно, не сответвие локализации компьютера, тогда не поможет и OemToChar или то что кодировка файла не 866 в случае соответствия локализации. Кстати проверить можно просмотром шрифта Terminal
Поскольку с OEM_CHARSET показывает даже псевдографику, чего не достигнешь перекодировкой.
← →
KSergey © (2004-04-06 16:28) [17]> [13] Андрей Сенченко © (06.04.04 15:44)
Спасибо большое, почитал.
Однако в основном там упоминались странноватые желания подпихнуть в качестве источника и приемника один и тот же буфер (да еще наслаивались проблемы константных выражений), либо "забывали" делать проверку на пустоту входной строки (при которой API-шная ф-ция не работает, что, на мой взгляд, странно. Ну да оставим это на совести MS (я не вижу другой причины)).
В своем же варианте я не вижу причины для какой-либо проблемы. Во всяком случае в разрезе упоминавшихся проблем.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c