Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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() не поможет?


Наверх

Титульная страница Поиск, карта сайта Написать письмо