![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Integer and Cardinal [D5, Win95/98, WinME]
Ilya1 © (2002-10-24 19:42:00)Задача: записывать и считывать c объектом TIniFile переменную типа Longword в INI-file. Проблема заключатся в том, что у TIniFile нет метода наподобие WriteLondword или WriteCardinal. Имеющиеся методы Read/WriteInteger естественно не решают проблему. Есть мысль переводить LongWord c помощью IntToStr в строку, а вот обратно как обратно? StrToInt не возвращает тип Longword.
У кого-нибудь есть какие-нибудь решения?
Заранее СПАСИТБО!
Ilya1 (2002-10-25 00:20:00) [1]то Pumpkin
Все верно, ReadInteger/WriteInteger работает! Сейчас так у меня и написано. Но хочется, что бы был красивый алгоритм, а не по принципу "как проще".
Когда у меня вычисляется 128-битнsй ключик при помощи Хеш-функции, то он формируется из 4х LongWord внутри DLL-ки, потом вовращаются эти 4-ре значения в основную программу и для дальнейшей работы записывается в ini-файл. И вот здесь мне совсем не хочется снова перечитывать ini-file, и снова передавать эти 4 переменных теперь уже в диапазоне Integer"а в эту DLL для дальнейших действий, ведь эти же данные уже есть и имеют нужные значения.
то TTCustomDelphiMaster
Что ж !!!??? накидал я текстит дома 7ке см.ниже РАБОТАЕТ!
А на 5ке на работе не работало :( Странно, может быть гдето в голове к концу раб.дня переглючило. Бывает. Завтра на рботе более внимательно посмотрю..
var
MyIniFile: TIniFile;
i: LongWord;
begin
i:= 4294967293;
MyIniFile := TIniFile.Create("c:\myapp.ini");
MyIniFile.WriteString("key", "longWord", IntToStr(i));
i := StrToInt64(MyIniFile.ReadString("key", "longWord", "0"));
ShowMessage(inttostr(i));
MyIniFile.Free;
end;
Всем большое спасибо!!!!!
Pumpkin (2002-10-24 22:50:00) [2]А чем тебя ReadInteger/WriteInteger не устраивает? Читает из ини то же значение что и пишет (какая тебе разница что он там записан со знаком). Если тебе руками ини ковырять нужно и ты хочешь, чтобы твой DWord красиво смотрелся в ини, без знака. Тогда Anatoly Podgoretsky © (24.10.02 19:51).
Anatoly Podgoretsky (2002-10-24 22:30:00) [3]Или
"$"+IntToHex($FFFFFFFF,8)
что тоже не работает?
TTCustomDelphiMaster (2002-10-24 22:24:00) [4]
> но ни StrToInt64 ни StrToHex не помогает
Как это? Даже это не работает ???
var
i: longword;
begin
i := StrToInt64("4294967293");
ShowMessage(inttostr(i));
end;
Ilya1 (2002-10-24 21:57:00) [5]:)))
Спасибо, но ни StrToInt64 ни StrToHex не помогает. Уже пробовал.
Суть такова, чтобы более менее оптимально работасть с 32 битами использую LongWord. Логичный с вашей стороны вопрос: а почему не работаю с LongIntege? а потому что знаковые целые с битовыми функциями (например xor)не работают. Вот и потребовалось такое преобразование. Конечно можно для хранения создать свой тип или вообще пользоваться нетипизированным файлом. Но зачем плодить фалы - есть уже ini-файл и достаточно. Тем более мои данные это тоже своего рода настроичные (это ключик для 128битной шифрации).
Anatoly Podgoretsky (2002-10-24 19:51:00) [6]IntToHex тоже может оказаться полезным
Андрей Прокофьев (2002-10-24 19:47:00) [7]StrToInt64() не поможет?