Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];

Вниз

Преобразование... 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.132 c
6-1156437318
i-s-v
2006-08-24 20:35
2007.01.28
Прослушка сети


15-1168460817
Chort
2007-01-10 23:26
2007.01.28
Логотип программы


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


10-1128048687
mechael
2005-09-30 06:51
2007.01.28
COM+, различие между методами чтения и записи своиства


2-1168480082
brother
2007-01-11 04:48
2007.01.28
никогда не задумывался о...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский