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 [???][???][???][???]