Nie wiem co chcesz osiągnąć, bo trochę zakręcenie napisałeś, ale pobawiłem się chwilę w robienie
prostego słownika i polecam użyć takiego kodu jak poniżej. Najpierw plik ini ze słowami wygląda tak:
[slowa]
auto=car
autko=mini car
cosik=something
A kod, który ładuje słowa do odpowiednich StringList i pozwala na wyszukiwanie bez względu na
wielość liter, a także wyszukuje słowa, których tylko początek został wpisany na przykład "aut".
Drugi przycisk tłumaczy w drugą stronę z anelskiego na polski, o ile takie rozwiązanie Ci pasuje.
Jeżeli nie, znasz już ideę, więc nie problem stworzyć drugi plik INI ze słowami angielskio polskimi
i odpowiednio go wczytać. Mam nadzieję, że o to Tobie chodziło i kod się przyda. Odpisz czy tak.
public
AppPath : string;
IniFIle : TIniFIle;
PolList, EngList : TStringList;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
// Wczytanie słownika oraz przygotowanie listy słów angielskich
var
I : integer;
begin
Application.Title := Caption;
EngList := TStringList.Create;
PolList := TStringList.Create;
AppPath := ExtractFIlePath(Application.ExeName);
IniFIle := TIniFIle.Create(AppPath + 'slownik.ini');
IniFIle.ReadSection('slowa', PolList);
IniFIle.ReadSectionValues('slowa', EngList);
for I := 0 to EngList.Count - 1 do
begin
EngList[I] := Copy(EngList[I], Pos('=', EngList[I]) + 1, Length(EngList[I]));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
// z polskiego na angielski
var
I : integer;
PolStr, EngStr : string;
begin
if Edit1.Text <> '' then
begin
Memo1.Clear;
for I := 0 to PolList.Count - 1 do
begin
PolStr := PolList[I];
if (AnsiLowerCase(Copy(Edit1.Text, 1, Length(Edit1.Text)))) =
AnsiLowerCase(Copy(PolStr, 1, Length(Edit1.Text))) then
begin
EngStr := EngList[I];
Memo1.Lines.Add(PolStr + ' = ' + EngStr);
end;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
// z angielskiego na polski
var
I : integer;
PolStr, EngStr : string;
begin
if Edit1.Text <> '' then
begin
Memo1.Clear;
for I := 0 to EngList.Count - 1 do
begin
EngStr := EngList[I];
if (AnsiLowerCase(Copy(Edit1.Text, 1, Length(Edit1.Text)))) =
AnsiLowerCase(Copy(EngStr, 1, Length(Edit1.Text))) then
begin
PolStr := PolList[I];
Memo1.Lines.Add(EngStr + ' = ' + PolStr);
end;
end;
end;
end;
Sorrki za brak formatowania kodu, ale pisałem w pospiechu, dojdziesz co i jak :)