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

Вниз

Или я туплю, или одно из двух   Найти похожие ветки 

 
Andy BitOff ©   (2006-12-27 02:02) [0]

Постоянно использовал для сохранние настроек в реест (когда надо в реестр), код следующего содержания:

begin
 with TRegIniFile.Create("") do begin
   RootKey := HKEY_CURRENT_USER;
   s := "\Software\bla_bla";
   try
     if OpenKey(s, False) then begin
       EDestDir.Text := ReadString(s, "LastPathSavedFile", "");
       trb_JPGCompress.Position := ReadInteger(s, "JPGCompress", 80);
       chb_SaveToTIF.Checked := ReadBool(s, "SaveToTIF", False);
       ....
     end;
   finally
     Free;
   end;
 end;
end;

Всегда все работало и не возникало никаких проблем, а тут ...
При попытке прочитать жирненькую строку, получаю; "Invalid data type for "JPGCompress". Бред, он конечно же DWORD.
Пройдя по F7 почему-то попадаю на ReadString.

Ничего не могу понять. Может, кто чего посоветует?


 
ors_archangel ©   (2006-12-27 02:22) [1]

Не знаю, но может поэтому

function TCustomIniFile.ReadInteger(const Section, Ident: string;
 Default: Longint): Longint;
var
 IntStr: string;
begin
 IntStr := ReadString(Section, Ident, "");
 if (Length(IntStr) > 2) and (IntStr[1] = "0") and
    ((IntStr[2] = "X") or (IntStr[2] = "x")) then
   IntStr := "$" + Copy(IntStr, 3, Maxint);
 Result := StrToIntDef(IntStr, Default);
end;

ты попадаешь на ReadString


 
Джо ©   (2006-12-27 02:28) [2]

> Ничего не могу понять. Может, кто чего посоветует?

Посмотреть редактор реестра на то, что там в самом деле записано. Мало ли, может там, "qwertyasdfg".


 
Джо ©   (2006-12-27 02:28) [3]

... или 567.


 
Andy BitOff ©   (2006-12-27 02:52) [4]

В редакторе ресрта написно:
JPGCompress    REG_DWORD    0x00000050 (80)

Изначально попадаю на
function TRegIniFile.ReadInteger(const Section, Ident: string; Default: LongInt): LongInt;
var
 Key, OldKey: HKEY;
 S: string;
begin
 Key := GetKey(Section);
 if Key <> 0 then
 try
   OldKey := CurrentKey;
   SetCurrentKey(Key);
   try
     if ValueExists(Ident) then
     begin
       S := inherited ReadString(Ident);
       Result := StrToIntDef(S, Default);
     end else
       Result := Default;
   finally
     SetCurrentKey(OldKey);
   end;
 finally
   RegCloseKey(Key);
 end
 else Result := Default;
end;


На жирненьком перехожу

function TRegistry.ReadString(const Name: string): string;
var
 Len: Integer;
 RegData: TRegDataType;
begin
 Len := GetDataSize(Name);
 if Len > 0 then
 begin
   SetString(Result, nil, Len);
   GetData(Name, PChar(Result), Len, RegData);
   if (RegData = rdString) or (RegData = rdExpandString) then
     SetLength(Result, StrLen(PChar(Result)))
   else ReadError(Name);
 end
 else Result := "";
end;


И вот здесь (жирным) я имею RegData = rdInteger, что соответственно, вызывает выше описанную ошибку.


 
ors_archangel ©   (2006-12-27 02:58) [5]

У меня

procedure TRegIniFile.WriteInteger(const Section, Ident: string; Value: LongInt);
var
 Key, OldKey: HKEY;
begin
 CreateKey(Section);
 Key := GetKey(Section);
 if Key <> 0 then
 try
   OldKey := CurrentKey;
   SetCurrentKey(Key);
   try
     inherited WriteString(Ident, IntToStr(Value));
   finally
     SetCurrentKey(OldKey);
   end;
 finally
   RegCloseKey(Key);
 end;
end;

соответственно записть целого производится в виде строки, может ты записывал значения не TRegINIFile.WriteStringом?


 
ors_archangel ©   (2006-12-27 03:00) [6]

Как ни тупо, но
JPGCompress    REG_DWORD    0x00000050 (80)
должно быть замененно на
JPGCompress    REG_SZ    "80".
Я лично юзаю MiniReg от кого-то там и там RegSetDword делает DWORD :) Борланд не жалеет реестр!


 
ors_archangel ©   (2006-12-27 03:01) [7]

Как ни тупо, но
JPGCompress    REG_DWORD    0x00000050 (80)
должно быть замененно на
JPGCompress    REG_SZ    "80".
Я лично юзаю MiniReg от кого-то там и там RegSetDword делает DWORD :) Борланд не жалеет реестр!


 
Ученик чародея ©   (2006-12-27 03:12) [8]

Я так использую

const
RegRootKey=HKEY_CURRENT_USER;

var Registry:TRegistry;
begin

Registry:=TRegistry.Create;
Registry.RootKey:=RegRootKey;
//открытие основного ключа
Registry.OpenKey("SOFTWARE\GART\CS",false);

//чтение значений
SystemRegVariables.StartAndRun:=Registry.ReadBool("StartAndRun");
SystemRegVariables.GoodTime:=Registry.ReadInteger("GoodTime");
SystemRegVariables.NormalTime:=Registry.ReadInteger("NormalTime");
SystemRegVariables.PoorTime:=Registry.ReadInteger("PoorTime");
SystemRegVariables.interval:=Registry.ReadInteger("interval");
SystemRegVariables.TimeAllarm:=Registry.ReadInteger("TimeAllarm");
...

Registry.Free;


 
Anatoly Podgoretsky ©   (2006-12-27 19:56) [9]

> Andy BitOff  (27.12.2006 2:02:00)  [0]

Тупишь, TRegIniFile это работа в стиле IniFile оставлено только для совместимости (для перехода) с Win 16
Работает только со строковыми значениями в реесте, а у тебя там DWord

Не хочешь неприятностей, то перейди на TRegistry


 
oldman ©   (2006-12-27 20:00) [10]


> Anatoly Podgoretsky ©   (27.12.06 19:56) [9]


Вот, как всегда.
Пришел умный мен и все испортил...



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.01.21;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.061 c
2-1167990875
forex
2007-01-05 12:54
2007.01.21
эмулятор командной строки


15-1167303986
Gero
2006-12-28 14:06
2007.01.21
Вопрос пользователям DMClient


15-1167229364
boriskb
2006-12-27 17:22
2007.01.21
Баян


1-1164200781
*Ray*
2006-11-22 16:06
2007.01.21
MultiSelect в DBGrid


6-1155718511
fastik
2006-08-16 12:55
2007.01.21
фреймы в WebBrowser





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