Zgaduję: robisz programik ze spisem linków do stron internetowych. W tym przypadku do przechowywania danych użyłbym TStringList.
- Możesz w prosty sposób zapisać/wczytać dane z dysku (LoadFromFile/SaveToFile)
- TStringList pozwala na konstrukcję name=value (odsyłam do helpa)
prosty przykład:
- Daj na formę jeden TListBox i jeden TEdit
- W sekcji public formy wstaw:
public
lista : TSTringList;
- W zdarzeniu OnCreate formy wstaw:
var
x : integer;
begin
lista := TStringList.Create;
lista.Add('Google=http://www.google.pl');
lista.Add('YouTube=http://www.youtube.pl');
for x := 0 to lista.Count - 1 do
ListBox1.Items.Add(lista.Names[x]);
- W zdarzeniu OnClick ListBox'a wstaw:
if ListBox1.ItemIndex < 0 then exit;
Edit1.Text := lista.Values[ListBox1.Items.Strings[ListBox1.ItemIndex]];
W ten sposób klikając na liście nazw w ListBox'ie w Edicie będziesz otrzymywał ich adresy.
PS. Jeśli chcesz mieć dane w pliku w postaci:
Google;http://www.google.pl
YouTube;http://www.youtube.pl
Możesz użyć funkcji StringReplace
do dopasowania formatu danych, żeby działał z powyższym przykładem.
Wczytujesz plik do TStringList:
lista.LoadFromFile(tuNazwaPliku);
lista.Text := StringReplace(lista.Text, ';', '=', [rfReplaceAll]);
Zapisujesz TStringList do plliku:
lista.Text := StringReplace(lista.Text, '=', ';', [rfReplaceAll]);
lista.SaveToFile(tuNazwaPliku);
Albo po utworzeniu listy poprzez lista := TStringList.Create
ustawiasz lista.NameValueSeparator
podając znak, jaki będzie oddzielał parę name, value. U ciebie jest to średnik, a więc:
lista.NameValueSeparator := ';';
Specjalnie podałem rozwiązanie z podmianą znaków, ponieważ znak = jest domyślnym znakiem rozdzielającym parę name, value.
Po więcej informacji zapraszam pod F1...