Powa?ży problem z rejestrami, 'Stack Overflow' - Pomocy!!!

0

Mam dwie procedurki: jedna ładuje nazwę pliku z pełną ścieżką do TMenuItem a druga otwiera plik do edycji

procedure TMainForm.LoadRecentFiles(Sender: TObject);
var
Reg: TRegistry;
RecentFile: TMenuItem;
i: Integer;
begin
Reg := TRegistry.Create;
Try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey(<font color="blue">'Software\Progragramik\RecFiles'</span>, False);
For i := 1 To Reg.ReadInteger(<font color="blue">'Count'</span>) Do
Begin
RecentFile.Create(RecentFilesMItem);
RecentFile.Caption := Reg.ReadString(<font color="blue">'File'</span> + IntToStr(i));
RecentFile.OnClick := OpenRecentFiles;
End;
Finally
Reg.Free;
End;
end;

procedure TMainForm.OpenRecentFiles(Sender: TObject);
begin
If (Sender Is TMenuItem) Then
OpenFile((Sender As TMenuItem).Caption) Else Exit;
end;

A w rejestre w kluczu HKEY_CURRENT_USERSoftwareProgramikRecFiles są następujące wartości:
Nazwa: Typ: Dane:
Count REG_DWORD 0x3
File1 REG_SZ C:\Program Files\aa.txt
File2 REG_SZ C:\ss.html
File3 REG_SZ D:\HTML\SystemSounds.txt
File4 REG_SZ
File5 REG_SZ
File6 REG_SZ
File7 REG_SZ
File8 REG_SZ
File9 REG_SZ

Wyskajuje mi Error:

Project Programik.exe raised exception class EStackOverflow with message 'Stack overflow'. Process stopped. Use Step or Run to continue.

Nawet gdy zmienie typ danych w rejestrze na:

Count REG_SZ 3

i w procedurze na:

procedure TMainForm.LoadRecentFiles(Sender: TObject);
var
Reg: TRegistry;
RecentFile: TMenuItem;
i: Integer;
begin
Reg := TRegistry.Create;
Try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey(<font color="blue">'Software\Progragramik\RecFiles'</span>, False);
For i := 1 To StrToInt(Reg.ReadString(<font color="blue">'Count'</span>)) Do
Begin
RecentFile.Create(RecentFilesMItem);
RecentFile.Caption := Reg.ReadString(<font color="blue">'File'</span> + IntToStr(i));
RecentFile.OnClick := OpenRecentFiles;
End;
Finally
Reg.Free;
End;
end;

procedure TMainForm.OpenRecentFiles(Sender: TObject);
begin
If (Sender Is TMenuItem) Then
OpenFile((Sender As TMenuItem).Caption) Else Exit;
end;

to nadal mi Stack Overflow wyskakuje. Gdzie tu jest błąd [???][???][???][???]

0

RecentFile.Create(RecentFilesMItem);

RecentFile := TMenuItem.Create(RecentFilesMItem);

0

Jak na mój gust daj try przy czytaniu wartości z rejestru. :d

0

Stack Overflow już nie wyskakuje ale w menu nic nie ma ;-( pusto.. [???][???] Co ja robię źle[???][???]

0

{...}
Begin
RecentFile := TMenuItem.Create(RecentFilesMItem);
RecentFile.Caption := Reg.ReadString('File' + IntToStr(i));
RecentFile.OnClick := OpenRecentFiles;
RecentMItem.Add(RecentFile); // musisz dodac itema
End;
{...}

Przypuszczam, ze RecentMItem jest typu TMenuItem (czyli item, w ktorym maja byc dodane nowe pozycje). Dodaj jeszcze jakis warunek czy wartosc 'Count' istnieje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1