Главная страница
    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.47 MB
Время: 0.042 c
15-1168598755
alll
2007-01-12 13:45
2007.01.28
Работа с компонентами Delphi


2-1168602839
DelphiLexx
2007-01-12 14:53
2007.01.28
Как в Memo выделять некоторые строки другим цветом


15-1168280807
Kerk
2007-01-08 21:26
2007.01.28
Спамеры. Использование в своих целях


9-1142626826
Yegorchic
2006-03-17 23:20
2007.01.28
Добавление GLFreeForm


15-1168081075
kaZaNoVa
2007-01-06 13:57
2007.01.28
Покритикуйте программу, Self-loader





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский