Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: CL | DM;

Вниз

HEX   Найти похожие ветки 

 
Adios ©   (2007-09-13 08:33) [0]

procedure hex2string(st:string);
var Source: string;
begin
source:=st;
with TStringList.Create do
try
  Text := StringReplace(Source, #32, #13#10, [rfReplaceAll]);
  S := "";
  for t := 0 to Count - 1 do
    S := S + Chr(StrToInt("$" + Strings[t]));
finally
  Free;
end;

end;

и теперь вопрос:
почему когда я передаю параметр "00" то S получается пустая и в мемо я её добавить не могу, а очень надо чтобы добавлялось.


 
Palladin ©   (2007-09-13 08:40) [1]

жестоко...


 
Palladin ©   (2007-09-13 08:41) [2]

а что эта функция делать то должна?


 
Adios ©   (2007-09-13 08:41) [3]

если в хексе то надо чтобы получилось так 000000(323635)000000
число в скобках может быть произвольное и потом всё это дело надо сохранить в .ТХТ


 
Adios ©   (2007-09-13 08:42) [4]

)) я знаю что жостко, всю ночь справки рою уже))


 
Adios ©   (2007-09-13 08:44) [5]

тоесть надо 00 00 00(32 36 35)00 00 00 привести к текстовому виду и добавить в мемо, проблема в том что 00 00 00 не добавляется в мемо


 
Palladin ©   (2007-09-13 08:45) [6]

а "00 00 00(32 36 35)00 00 00" это не текстовый вид?


 
Palladin ©   (2007-09-13 08:46) [7]

ты же на входе строку передаешь, и на выходе строка, я чей то не пойму просто каким образом она у тебя должна трансформироваться, точнее я вижу что она у тебя трансформируется, но действие сие для строк вообще то некорректно


 
Adios ©   (2007-09-13 08:51) [8]

ХЕКС значение выглядит так: 01 00 00 00 36 00 00 00 0D
а текст примерно так:    6  

тоесть после 6 три пробела и как я понял перезод на другую строку


 
Anatoly Podgoretsky ©   (2007-09-13 09:05) [9]


> жестоко...

Не то слово


 
Anatoly Podgoretsky ©   (2007-09-13 09:06) [10]


> тоесть надо 00 00 00(32 36 35)00 00 00 привести к текстовому
> виду и добавить в мемо, проблема в том что 00 00 00 не добавляется
> в мемо

А что ты ожидаешь там увидеть, это же не печатные символы.


 
Palladin ©   (2007-09-13 09:07) [11]

ты ерундой занимаешься, конечно же в string можно хранить и нечитаемые символы, но на кой хрен их в txt файл то записывать? в блокноте что ли его открывать...

Function SaveHexToNatFile(Const s,p_strFileName:String);
Var
i,p:Integer;
f:File;
b:Array [0..32*1024-1] Of Byte;
Begin
p:=0;
AssignFile(f,p_strFileName); Rewrite(f,1);
For i:=1 to Length(s) Do
 If s[i]=" " Then
  Begin
   b[p]:=StrToInt("$"+s[i-2]+s[i-1]);
   Inc(p);
   If p=32*1024-1 Then
    Begin
     p:=0;
     BlockWrite(f,b,SizeOf(b));
    End;
  End;
BlockWrite(f,b,p);
CloseFile(f);
End;

SaveHexToNatFile("01 00 00 00 36 00 00 00 0D ","c:\dump.txt");

а на кой memo вообще использовать понятия не имею... как ты в мемо выведешь символ окончания строки 0 ?


 
Adios ©   (2007-09-13 09:07) [12]

может мемо использовать не стоит, тогда что надо?


 
Anatoly Podgoretsky ©   (2007-09-13 09:09) [13]


> может мемо использовать не стоит, тогда что надо?

Вернуть ноутбук санитарам.


 
Palladin ©   (2007-09-13 09:12) [14]


> может мемо использовать не стоит, тогда что надо?

надо литературу по паскалю использовать и иметь понимание как информация хранится и что это вообще такое, информация, данные, а так же что является строкой и тд и тп... короче учится тебе нужно...


 
Adios ©   (2007-09-13 09:14) [15]

потому и задаю вопросы в соответствующем форуме, тогда посоветуй книгу, если можно то со ссылкой.


 
Сергей М. ©   (2007-09-13 09:30) [16]

procedure HexToBinFile(HexString, FileName: String);
begin
 HexString := AnsiLowerCase(StringReplace(HexString, " ", "", [rfReplaceAll]));
 with TMemoryStream.Create do
 try
   Size := Length(HexString) div 2;
   if HexToBin(HexString, Memory, Size) = 0 then
     ms.SaveToFile(FileName);
 finally
   Free;
 end;  
end;


 
Anatoly Podgoretsky ©   (2007-09-13 09:37) [17]

> Adios  (13.09.2007 09:14:15)  [15]

Форум то для начинающих, а тебе пока еще рано.
Сначало надо немного почитать литературу.


 
Adios ©   (2007-09-13 09:37) [18]

ПОЛУЧИЛОСЬ!!, надо было вместе с процедурой из первого поста использовать паскалевский метод доступа!!


 
Сергей М. ©   (2007-09-13 09:40) [19]


> надо было вместе с процедурой из первого поста использовать
> паскалевский метод доступа


Чегоооо ?!


 
Adios ©   (2007-09-13 09:43) [20]

ну онаже переменную объявляет, файл открыть для добавленя в конец и функцией WRITE дописывать значения в файл.


 
Palladin ©   (2007-09-13 09:49) [21]

северный пушной зверек просто :)


 
Anatoly Podgoretsky ©   (2007-09-13 09:51) [22]

Надо бы соответствую конференцию - для недоначинающих


 
Сергей М. ©   (2007-09-13 09:51) [23]

А причем тут файл и метод доступа к нему ?


> онаже переменную объявляет


Кто "она" ?
hex2string что ли ?
Нет там у тебя никаких упоминаний о файле, ни в самом названии функции ни в ее теле.


 
Adios ©   (2007-09-13 09:57) [24]

function hex2string(st:string):string;
var Source: string;
begin
source:=st;
with TStringList.Create do
try
  Text := StringReplace(Source, #32, #13#10, [rfReplaceAll]);
  S := "";
  for t := 0 to Count - 1 do
    S := S + Chr(StrToInt("$" + Strings[t]));
    result:=s;
finally
  Free;
end;

end;


AssignFile(imp, Label1.Caption+"test.txt");
Append(imp);
write(imp,hex2string(edit1.text));
CloseFile(imp);


 
Adios ©   (2007-09-13 10:02) [25]

Удалено модератором
Примечание: мат, три дня RO


 
Сергей М. ©   (2007-09-13 10:04) [26]


> test.txt


С какого перепугу файл текстовый ?

Текстовый файл подразумевает содержание кодов печатных символов и символов управления. А у тебя в hex-строке встречаются нулевые коды, которые не относятся ни к печатным ни к управляющим.


 
Adios ©   (2007-09-13 10:06) [27]

да, но если этот файл вскрыть потом хекс-редактором то получится именно то что мне было нужно


 
Сергей М. ©   (2007-09-13 10:10) [28]

Да на здоровье, открывай ты его чем угодно)
Но не обзывай файл текстовым, если он таковым на самом деле не является)



Страницы: 1 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.023 c
15-1189955101
master_asasin
2007-09-16 19:05
2007.10.14
Подключение


3-1181226878
олег2
2007-06-07 18:34
2007.10.14
Delphi+Access


15-1189831668
Aller
2007-09-15 08:47
2007.10.14
порты в freebsd


2-1190006417
bss
2007-09-17 09:20
2007.10.14
Как избавиться от мигания в гриде при переоткрытии запроса


2-1190029186
bss
2007-09-17 15:39
2007.10.14
Сохранение рисунка в BLOB-поле