AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MyList.ValueFromIndex[index]

Ein Thema von Steven2 · begonnen am 15. Mai 2007 · letzter Beitrag vom 16. Mai 2007
Antwort Antwort
Steven2

Registriert seit: 17. Nov 2006
94 Beiträge
 
Delphi 11 Alexandria
 
#1

MyList.ValueFromIndex[index]

  Alt 15. Mai 2007, 19:41
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:
21385;Amelinghausen
21385;Oldendorf
21385;Rehlingen
Ich würde gerne wenn eine PLZ für mehrere Orte gültig ist diese Orte in einer Combobox darstellen, wie muss ich das machen?
 combobox1,items.add(Trim(MyList.ValueFromIndex[index])); funktioniert nicht



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;
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: MyList.ValueFromIndex[index]

  Alt 15. Mai 2007, 20:24
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
combobox.items.CommaText := MyList.ValueFromIndex[index]; // wie auch immer index ermittelt wurde Grüße vom marabu
  Mit Zitat antworten Zitat
capo

Registriert seit: 7. Jul 2006
453 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: MyList.ValueFromIndex[index]

  Alt 15. Mai 2007, 22:35
Das finde ich auch interessant...danke
Hotte
  Mit Zitat antworten Zitat
Steven2

Registriert seit: 17. Nov 2006
94 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: MyList.ValueFromIndex[index]

  Alt 16. Mai 2007, 00:25
Danke. das isses.
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
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: MyList.ValueFromIndex[index]

  Alt 16. Mai 2007, 07:23
Hallo Steven,

eine simple Zuweisung des ersten Items an die Texteigenschaft der ComboBox liefert dir die gewünschte Vorbelegung:

 with ComboBox do Text := Items[0]; Deine Daten vom alten Format in das neue Format umwandeln - ich würde es so machen:

Delphi-Quellcode:
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;
Freundliche Grüße
  Mit Zitat antworten Zitat
Steven2

Registriert seit: 17. Nov 2006
94 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: MyList.ValueFromIndex[index]

  Alt 16. Mai 2007, 12:31
wow..ich versteh zwar nicht alles aber es funktioniert.
Danke !
Gruß Steven
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz