![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
1 Как открыть *.EXE фаил в Tmemo также как его открывает Notepad
2 Как перевести текст из кодировки Dos в Windows? |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Например так:
конечно это очень медленно (ну очень!) и так делать не надо! Используй BlockRead - но принцип тот же. 2) Свойство OEMConvert -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
BlockRead, AssingFile, LoadFromFile, LoadFromStream, я всё это пробовал и визде одно и тоже открывается лишь часть файла.
|
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
[/QUOTE]Свойство OEMConvert [QUOTE]
Чёто оно не конвертирует кодировку DOS в Windows(Кирилица) |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Я использую FileRead, работает стабильно.
|
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Когда-то ещё не знал, про эту функцию, набросал свой редактор с конвертацией из ДОСа. Работает медленно, но стабильно. Если хочешь, могу кинуть. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Попробовал, действительно, но дело не в чтении файла, Memo не позволяет отображать 0.
Вот мой код
Легко убедиться что переменная st содержит полную инфу, а вот в последней строчке инфа пропадает.. Скорее всего для помешения в Memo надо заменить все #0 на что-то другое. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| nsvi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 15.9.2002 Репутация: нет Всего: нет |
TMemo позволяет выводить только чуть больше 40 кб, поэтому надо считать файл в строку или лучше в массив байт и по мере скроллинга в мемо перезагружать строку.
Я для вывода exe-строки в 16-ричном виде использую следующее: {Не указанные переменные-глобальные} var f: File; s: byte; a,b,n,m: integer; begin if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then begin AssignFile(f,OpenDialog1.FileName); Reset(f,1); m := FileSize(f); b := FileSize(f); if m>150008 then m:=15008; a := 1; Stroka :='0000 '; if RadioGroup1.ItemIndex = 0 then begin V := 32; Memo1.Font.Size := 8; end else begin V:=16; Memo1.Font.Size := 10; end; SetLength(Str,b); For n := 0 to m-1 do begin BlockRead(f,s,1); Str[b]:=s; if n<m then begin Stroka := Stroka + IntToHex(s,2) + ' '; if a = V then begin a := 0; Stroka := Stroka + #13#10 + IntToHex(n+1,4) + ' '; end; a := a + 1; end; end; CloseFile(f); Form1.Memo1.Text := Stroka; end; end; RadioGroup1 переключает режим отображения 16 или 32 байта в строке. Добавив процедуру обновления MEMO в зависимости от того, какие строки выведены на экран можно будет просмотреть весь файд любой длины. |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
TStrings.LoadFromFile.Чтение файла с нулевым символом
http://www.delphikingdom.com/stones/stone_34.htm // ----------------------------------------------------------------- function Ansi2OEM(const S : string) : string; // Конвертирует строку из кодировки Windows в DOS кодировку begin SetLength(Result,Length(S)); if Length(S) <> 0 then CharToOem(pChar(S),pChar(Result)); end; // ----------------------------------------------------------------- function OEM2Ansi(const S : string) : string; // Конвертирует строку из кодировки DOS в Windows кодировку begin SetLength(Result,Length(S)); if Length(S) <> 0 then OemToChar(pChar(S),pChar(Result)); end; // ----------------------------------------------------------------- -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |