Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
ВнизПеревод любого файла в HEX Найти похожие ветки
← →
delphi-coder (2004-10-03 02:06) [0]Народ, подскажите плиз как cделать так чтобы при открытии файла в Memo текст (если файл текстовый) отображался в виде HEX.
← →
Sergey_Masloff (2004-10-03 02:12) [1]Читай по 4 байта и IntToHEX() - например.
← →
GanibalLector © (2004-10-03 02:22) [2]function IntToHex(Value: Integer; Digits: Integer): string;
Т.е. предварительно прийдется переводить символы в то
← →
KilkennyCat © (2004-10-03 02:23) [3]
> Sergey_Masloff (03.10.04 02:12) [1]
можно и по байту... где гарантия, что размер файла кратен четырем?
← →
default © (2004-10-03 02:31) [4]KilkennyCat © (03.10.04 02:23) [3]
FileSizeInBytes div 4 по 4 и FileSizeInBytes mod 4 в конце
← →
GanibalLector © (2004-10-03 02:38) [5]2 default
FileSizeInBytes div 4 по 4 и FileSizeInBytes mod 4 в конце
КрасивA $)
← →
KilkennyCat © (2004-10-03 03:01) [6]
procedure TForm1.Button1Click(Sender: TObject);
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer;
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
memo1.Text := memo1.Text + Format("%0x",[integer(Buffer[i])]); // так прикольней.
end;
finally
FreeMem(Buffer);
end;
end;
end;
← →
KilkennyCat © (2004-10-03 03:02) [7]не сам придумал - готовая примера из делфей.
← →
default © (2004-10-03 03:12) [8][7]
там по байту за раз, к тому же у автора файл текстовый
как я понял нужно преобраз-ть только что между разделителями строк находится(сами разделите не трогать)
← →
KilkennyCat © (2004-10-03 03:37) [9]
> default © (03.10.04 03:12) [8]
разве разделители строк к тексту не относятся?
← →
default © (2004-10-03 03:39) [10]KilkennyCat © (03.10.04 03:37) [9]
пусть автор уточнит
зачем он тогда вообще уточнил что файл текстовый
к тому же переведённые в HEX байты лучше записывать в туже строку а не делать отдельный буфер...
← →
default © (2004-10-03 03:42) [11][10]
опс погорячился в последней фразе
← →
KilkennyCat © (2004-10-03 03:44) [12]
> default © (03.10.04 03:39) [10]
ну не знаю... в какую строку - я сразу в мемо пихнул... мне этот пример нравится тем, что - файл прочитан сразу и брошен, т.е. усе, его можно и другим юзать, а мы могем и с буфером поработать. Да и скорость так вроде больше будет, а? Да и насколько меня учили - работать сразу с файлом нужно только если нужно, а если ненужно - то ненужно, коли буферы существуют.
← →
KilkennyCat © (2004-10-03 03:44) [13]
> default © (03.10.04 03:42) [11]
поздно!!! я уже заметил и ответил :)))
← →
KilkennyCat © (2004-10-03 03:46) [14]и кстати, если разделители не трогать, и предположить что файлы могут быть как одоа, так и оа и од, то, вроде как, только побайтово и получится.
← →
default © (2004-10-03 03:49) [15]KilkennyCat © (03.10.04 03:44) [12]
переводить я думаю лучше по 4 байта(пока можно)
а чтоб в цикле то и дело память не перераспред-ась лучше сразу память выделить за раз
← →
default © (2004-10-03 03:50) [16]KilkennyCat © (03.10.04 03:46) [14]
ReadLn а там разбирать
← →
default © (2004-10-03 03:51) [17]а лучше свой hex по подобию стандартного сделать где только
#10 #13 в себя же отображаются в таблице
← →
KilkennyCat © (2004-10-03 03:54) [18]
> default © (03.10.04 03:50) [16]
а не усложняет ли это? мы получим уже два цикла: один читает строки, второй преобразует. И опять же два пункта: мы удерживаем файл открытым дольше, и если все-таки разделители нужны, то мы не сможем сказать, двух- или однобайтовые они были.
← →
default © (2004-10-03 04:00) [19]KilkennyCat © (03.10.04 03:54) [18]
если размер файла позволяет то можно так
читаем файл целиком
устанавливаем соотв-ую длину TMemo.Text
потом переводим 4-ами со своим IntToHex-ом который нечувствителен к #10#13
и пишем в TMemo.Text
← →
KilkennyCat © (2004-10-03 04:04) [20]
> default © (03.10.04 04:00) [19]
...или также по четыре Formatом, если чувствительность к ВК нужна.
← →
KilkennyCat © (2004-10-03 04:05) [21]а не... формат тогда соврет, похоже...
← →
default © (2004-10-03 04:22) [22]а сабж утверждает что любого файла(ну типа как у hex-редактора ему надо вид)так что никаких проблем с разделителями нет
← →
KilkennyCat © (2004-10-03 04:52) [23]да с ними никогда проблем нет :)
← →
delphi-coder (2004-10-04 00:13) [24]Спасибо всем я всё понял !!!!
← →
Рыба © (2004-10-04 00:33) [25]>[24]
Просто песня :))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.039 c