Witam wszystkich bardzo serdecznie. Mam duży problem z konwersją kodu z C++ do Delphi. Delphi uczę się od podstaw. Mam dokładnie taką samą swoją sytuację z jak z wątku: https://4programmers.net/Forum/C_i_C++/234123-jak_powiazac_radiogroup_z_memo?p=1036179#id1036179.
W C++ mam:
void __fastcall TForm1::ComboBox1Select(TObject *Sender)
{
if (ComboBox1->Text == "A1")
{
String sFileName1 = ExtractFilePath(ParamStr(0)) + "dat\\a1pik.dat";
String sFileName2 = ExtractFilePath(ParamStr(0)) + "dat\\uwagia1.dat";
if(!FileExists)
{
Application->MessageBox(("Nie odnaleziono pliku '" + ExtractFilePath(ParamStr(0)) + "dat\\a1pik.dat'!").c_str(), "Uwaga! Brak pliku", MB_OK | MB_ICONSTOP);
RadioGroup1->Items->Clear();
powiat->Caption = "Nie wybrano żadnej opcji...";
Memo1->Clear();
return;
}
Lista->Clear();
Lista->LoadFromFile(sFileName1);
RadioGroup1->Visible = true;
RadioGroup1->Items->Clear();
powiat->Caption = "Nie wybrano żadnej opcji...";
Memo1->Clear();
for(int i = 0; i < Lista->Count; i++)
{
RadioGroup1->Items->Add(Lista->Names[i]);
}
Dalej dla RadioGroup1Click():
Memo1->Clear();
Memo1->Lines->Append(Lista->Values[Lista->Names[RadioGroup1->ItemIndex]]);
I w pliku .h deklarację:
private: // User declarations
THashedStringList *Lista;
W Delphi dodałem zmienne:
var
Form1: TForm1;
lista_drog: TStringList;
liczba_drog: Integer;
procedure TForm1.ComboBox1Select(Sender: TObject);
begin
if (ComboBox1.Text = 'A1') then
begin
lista_drog := TStringList.Create;
if FileExists('dat\a1pik.dat') then
begin
lista_drog.LoadFromFile('dat\a1pik.dat');
RadioGroup1.Visible := true;
RadioGroup1.Items.Clear;
for liczba_drog := 0 to lista_drog.Count-1 do
begin
RadioGroup1.Items.Add(lista_drog.Names[liczba_drog]);
end
end
else
begin
MessageDlg('Nie odnaleziono pliku: ' + ExtractFilePath(Application.ExeName) + 'dat\a1pik.dat' + '.' , mtError, [mbOk], 0 );
RadioGroup1.Items.Clear;
powiat.Caption := 'Nie wybrano żadnej opcji...';
Memo1.Clear;
end
end;
lista_drog.Free;
end;
Do RadioClicka nawet nie doszedłem.
Jednak nie otrzymuję takie samego efektu jak w C++. Czy możecie mi jakoś pomóc. Chodzi o wczytanie pliku do zmiennej StringList i później pobranie wartości Names do RadioBox przy sprawdzeniu warunków istnieja pliku.
FList
jest zmienna prywatną (czyli widoczną przy odwołaniach do klasy i to tylko w module w którym klasa jest zadeklarowana).