![]() |
MyList.ValueFromIndex[index]
Hallo,
Mit dem Delphi-Quellcode: kann tippe ich eine Postleitzahl in ein Edit ein und bekomme in einem anderen Edit den dazugehörigen Ort angezeigt Da ich heute erfahren habe das eine Postleitzahl auch für verschiedene Orte gültig sein kann. Z.B. Zitat:
Delphi-Quellcode:
funktioniert nicht
combobox1,items.add(Trim(MyList.ValueFromIndex[index]));
Delphi-Quellcode:
...
private { Private declarations } MyList: THashedStringList; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin MyList := THashedStringList.Create; MyList.LoadFromFile( ExtractFilePath(Application.ExeName) + 'plzDat.txt'); MyList.NameValueSeparator := ';'; ... end; //--angepasste proc von ACE-ppc: procedure TForm1.Button8Click(Sender: TObject); var Index: Integer; begin index := MyList.IndexOfName(PlzEdit.Text + ' '); If index > -1 Then OrtEdit.Text := Trim(MyList.ValueFromIndex[index]); end; //--jetzte erst die Liste freigeben procedure TForm1.FormDestroy(Sender: TObject); begin ... MyList.Free; ... end; |
Re: MyList.ValueFromIndex[index]
Hallo Steven,
bei einer assoziativen Liste gehst du von der Eindeutigkeit des Zugriffsschlüssels aus. Wenn du dein Datenformat etwas modifizierst, dann kannst du recht einfach zum Ziel kommen:
Code:
21385=Amelinghausen,Oldendorf,Rehlingen
Delphi-Quellcode:
Grüße vom marabu
combobox.items.CommaText := MyList.ValueFromIndex[index]; // wie auch immer index ermittelt wurde
|
Re: MyList.ValueFromIndex[index]
Das finde ich auch interessant...danke
|
Re: MyList.ValueFromIndex[index]
Danke. das isses. :xmas:
Eine Frage noch, ist es möglich direkt das erste Item der Combobox mit Inhalt zu füllen? War ja das Tolle daran wenn eine PLZ eingegeben wurde und der Ort sofort zu sehen war. Nun muss man immer die Combobox aufklappen. Eins meiner ganz großen Probleme ist es nun das ich alle Daten umschreiben muss, wenn dazu jemand noch eine Idee hat. Greatings Steven |
Re: MyList.ValueFromIndex[index]
Hallo Steven,
eine simple Zuweisung des ersten Items an die Texteigenschaft der ComboBox liefert dir die gewünschte Vorbelegung:
Delphi-Quellcode:
Deine Daten vom alten Format in das neue Format umwandeln - ich würde es so machen:
with ComboBox do Text := Items[0];
Delphi-Quellcode:
Freundliche Grüße
function CommaText(const ct, value: string): string;
begin with TStringList.Create do try CommaText := ct; Add(Value); Result := CommaText; finally Free; end; end; function CreateFoldedValues(s: TStrings; nvs: Char = '='): TStringList; var i: Integer; ct, name, value: string; begin Result := TStringList.Create; s.NameValueSeparator := nvs; for i := 0 to Pred(s.Count) do begin name := s.Names[i]; value := s.ValueFromIndex[i]; ct := Result.Values[name]; if ct = '' then Result.Values[name] := value else Result.Values[name] := CommaText(ct, value); end; end; procedure TDemoForm.ButtonClick(Sender: TObject); var s: TStrings; begin with ListBox do begin Items.LoadFromFile(ParamStr(1)); s := CreateFoldedValues(Items, ';'); Items.Assign(s); s.Free; Items.SaveToFile(ParamStr(2)); end; end; |
Re: MyList.ValueFromIndex[index]
wow..ich versteh zwar nicht alles aber es funktioniert.
Danke ! Gruß Steven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz