Главная страница
    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.038 c
2-1168120534
koha
2007-01-07 00:55
2007.01.28
brcc32 - можно ли ей конвертировать любой файл в ресурс?


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


9-1142913299
VolanD666
2006-03-21 06:54
2007.01.28
Освещенность точки


2-1168169514
mike-d
2007-01-07 14:31
2007.01.28
Проверка имени создаваемого файла


2-1168606314
Anton22
2007-01-12 15:51
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский