Главная страница
    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.227 c
15-1168176514
Ringo
2007-01-07 16:28
2007.01.28
Меня тут друг позвал помочь, мышь тормозит.


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


2-1168607715
CaLL|ok
2007-01-12 16:15
2007.01.28
Подскажите что я делаю неправильно:


2-1168629474
Kirillrepin
2007-01-12 22:17
2007.01.28
как из ListView в режиме Report удалить выделенную запись


2-1168192483
Khabibulin
2007-01-07 20:54
2007.01.28
Засветить некоторые ячейки StringGrid а





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