Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> 1) Как открыть *.exe фаил в Tmemo, 2) Как перевести текст из Dos в Windows 
:(
    Опции темы
RA
Дата 25.10.2002, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



1 Как открыть *.EXE фаил в Tmemo также как его открывает Notepad

2 Как перевести текст из кодировки Dos в Windows?
PM   Вверх
Vit
Дата 25.10.2002, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Например так:
Код

 var t:file of char;
     c:char;
begin
 assignfile(t,'MyFile.exe');
 reset(t);
 while not eof(t) do
   begin
     read(t,c);
     memo1.text:=memo1.text+c;
   end;
end;


конечно это очень медленно (ну очень!) и так делать не надо! Используй 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
PM MAIL WWW ICQ   Вверх
RA
Дата 25.10.2002, 04:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



BlockRead, AssingFile, LoadFromFile, LoadFromStream, я всё это пробовал и визде одно и тоже открывается лишь часть файла.
PM   Вверх
RA
Дата 25.10.2002, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



[/QUOTE]Свойство OEMConvert [QUOTE]

Чёто оно не конвертирует кодировку DOS в Windows(Кирилица)
PM   Вверх
December
Дата 25.10.2002, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Я использую  FileRead, работает стабильно.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
December
Дата 25.10.2002, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: 8
Всего: 57



Цитата(RAdmin @ 24.10.2002, 21:27)
[/QUOTE]Свойство OEMConvert [QUOTE]

Чёто оно не конвертирует кодировку DOS в Windows(Кирилица)

Когда-то ещё не знал, про эту функцию, набросал свой редактор с конвертацией из ДОСа. Работает медленно, но стабильно. Если хочешь, могу кинуть.


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Vit
Дата 25.10.2002, 05:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Попробовал, действительно, но дело не в чтении файла, Memo не позволяет отображать 0.

Вот мой код

Код

 var s:array of char;
     t:file;
     c:char;
     st:string;
begin
 assignfile(t,'c:\dev\__QB9.DB');
 reset(t,1);
 setlength(s,filesize(t));
 Blockread(t,pointer(s)^,filesize(t)-1);
 st:=String(s);
 memo1.lines.text:=st;
end;


Легко убедиться что переменная 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
PM MAIL WWW ICQ   Вверх
nsvi
Дата 26.10.2002, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 в зависимости от того, какие строки выведены на экран можно будет просмотреть весь файд любой длины.
PM MAIL   Вверх
Alex
Дата 26.10.2002, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 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;
// -----------------------------------------------------------------


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.