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

Вниз

Преобразование... Int64 в строку   Найти похожие ветки 

 
Цукор5   (2007-01-05 17:34) [0]

Есть строка, например : 04820001123456.
Надо преобразовать ее к виду : Chr($04)+Chr($82)+Chr($0)+...

Делаю так :

Line:="04820001123456";
I:=StrToInt64Def("$"+Line,0); //где  I:Int64

// далее проблемный код
Q:=I; //где Q:DWord. копирую младшее слово
...
Result:=Chr(Lo(LoWord(Q)))+Chr(Hi(LoWord(Q)))+...

Надеюсь смысл понятен.

Вопрос в следующем. А нет ли способа попроще ??? Без всяких Lo,LoWord и т.д.


 
AlexanderMS ©   (2007-01-05 17:40) [1]

IntToStr?


 
Цукор5   (2007-01-05 17:44) [2]

2 AlexanderMS
Господин, не мешайте.
Вы хоть вопрос читали ???


 
AlexanderMS ©   (2007-01-05 17:45) [3]

Что-то не понял.

Преобразование... Int64 в строку
Есть строка, например : 04820001123456


 
Palladin ©   (2007-01-05 17:47) [4]

IntToHex(StrToInt64Def("$"+Line,0),2)


 
Palladin ©   (2007-01-05 17:50) [5]

нет, ну надо же так ступить...

var
s1,s2:String;
i:Integer;

s1:="04820001123456";
setlength(s2,length(s1) div 2);
for i:=1 to length(s1) div 2 Do s2[i]:=chr(strtoint(copy(s2,(i*2)-1,2)));


 
Palladin ©   (2007-01-05 17:51) [6]

сегодня день тупления
for i:=1 to length(s1) div 2 Do s2[i]:=chr(strtoint(copy(s1,(i*2)-1,2)));


 
sniknik ©   (2007-01-05 21:14) [7]

> А нет ли способа попроще ??? Без всяких Lo,LoWord и т.д.
var
 i: int64;
 ch: array[0..7] of char absolute i;
begin
 i:= StrToInt64Def("$04820001123456", 0);
 Result:= ReverseString(ch);
end;


имхо будет тоже самое, правда смысла большого в этом нет, 0 в середине/начале это тот же конец строки поэтому часть обрежется. вот если бы это изначально стока была "преобразованная" в int64... то получилось бы правильно.


 
sniknik ©   (2007-01-05 21:16) [8]

> тот же конец строки
для pchar, если делать через string то нет.


 
sniknik ©   (2007-01-05 21:32) [9]

через string, например так

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;

 function Conv(const s: string): string;
 var
   i: ^int64;
 begin
   SetLength(result, 8);
   i:= @result[1];
   i^:= StrToInt64Def("$"+s, 0);
   result:= ReverseString(result);
 end;

begin
 s:= Conv("04820001123456");
 Label1.Caption:= s;
end;


p.s. переменная s введена специально, посмотреть результат при трассировке... можно сразу присвоить Label1.Caption-у, только там ничего видно изза лидирующего нуля не будет.


 
begin...end ©   (2007-01-06 10:27) [10]

var
 s1, s2: string;
begin
 s1 := "04820001123456";
 SetLength(s2, Length(s1) div 2);
 HexToBin(PChar(s1), PChar(s2), Length(s2));
end


 
Цукор5   (2007-01-06 13:18) [11]

2 begin...end,sniknik

А где взять  ReverseString, HexToBin ??? В модулях D7 я их не обнаружил!!!


 
sniknik ©   (2007-01-06 13:52) [12]

> А где взять  ReverseString, HexToBin ??? В модулях D7 я их не обнаружил!!!
курсором встать на слово и нажать Ctrl+F1


 
DevilDevil ©   (2007-01-06 19:19) [13]

А я вот вопроса не понял. Покажи, что должно быть на входе, что на выходе; в каких типах.


 
begin...end ©   (2007-01-06 22:22) [14]

> Цукор5   (06.01.07 13:18) [11]

HexToBin находится в модуле Classes.



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

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

Наверх




Память: 0.49 MB
Время: 0.053 c
15-1168075168
Slider007
2007-01-06 12:19
2007.01.28
С днем рождения ! 6 января


15-1167911772
Mr. D.
2007-01-04 14:56
2007.01.28
Совмещение ESC последовательности с windows-печатью


15-1168465744
normandia
2007-01-11 00:49
2007.01.28
Впервые столкнулся с Win XP Home Edition. Плачевно.


2-1167928170
Vovan #2
2007-01-04 19:29
2007.01.28
Чем отличаются GlobalAlloc от VirtualAlloc? И про PChar.


15-1168543477
Kolan
2007-01-11 22:24
2007.01.28
Объясните что такое ECO.