AGB  ·  Datenschutz  ·  Impressum  







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

Postleitzahl mit Ort verknüpfen

Ein Thema von Steven2 · begonnen am 17. Nov 2006 · letzter Beitrag vom 18. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Steven2

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

Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 19:08
Hallo
ich habe eine Textdatei in der alle Postleitzahlen mit den dazugehörigen Orten in folgendem Format:
Zitat:
01003 = Dresden

Ich möchte folgendes machen:
ich habe zwei Tedits, in das eine schreibe ich die Postleitzahl z.B. 01003 dann soll in dem anderen TEdit der Ort automatisch eingetragen werden.

Komme mit folgendem Beispiel nicht weiter, wenn ich zum Beispiel nach
01003 = Dresden suche bekomme ich die Zeile und den Inhalt angezeigt.
Suche ich aber nur nach 01003 wird nichts gefunden.


Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  MyList: THashedStringList;
  Index, i: Integer;
begin
  MyList := THashedStringList.Create;
  MyList.LoadFromFile(
    ExtractFilePath(Application.ExeName) + 'plzDat.txt');
  try
    if MyList.Find('01003 = Dresden', Index) then //später dann das edit
    begin
      for i := 0 to MyList.Count - 1 do
      begin
        if MyList[i] = '01003 = Dresdenthen //später dann das edit
        begin
          Edit2.text := MyList[i];
          Edit3.text := IntToStr(Index);
        end;
      end; end;
  finally
    MyList.Free;
  end;
end;
Grüsse
Steven
  Mit Zitat antworten Zitat
marabu

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

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 19:18
Hallo Steven,

mit ein wenig Glück kommst du mit der Methode IndexOfName() besser voran.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 19:26
Versuch das mal
Delphi-Quellcode:
var
  MyList: THashedStringList;
  i: Integer;
  Ort, PLZ: String;
begin
  MyList := THashedStringList.Create;
  MyList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'plzDat.txt');
  if MyList.Find('01003 = Dresden', i) then
  begin
    PLZ := Trim(Copy(MyList[i], 1, Pos('=', MyList[i]) -1));
    Ort := Trim(Copy(MyList[i], Pos('=', MyList[i]) +1, Length(MyList[i])));
    ShowMessage(Format('"%s - %s"', [PLZ, Ort]));
  end;
  MyList.Free;
  Mit Zitat antworten Zitat
Steven2

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

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 19:30
Hallo Marabu
Ich bin schon am suchen.

Hallo ErazerZ
Das haut hin, wenn ich in Edit1 nur die PLZ angeben dann haut das auch mit deinem Beispiel nicht hin.
ODer sehe ich das falsch?

Grüße vom Steven
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#5

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 19:48
Ich würde es so machen ...

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sl : TStringList;
  Indx : Integer;

begin
  sl := TStringList.Create;
  sl.LoadFromFile(ExtractFilePath(Application.ExeName) + 'plzDat.txt');

  //Leerzeichen vor und nach dem = entfernen
  sl.Text := StringReplace(sl.Text, ' = ', '=', [rfReplaceAll]);

  Indx := sl.IndexOfName(Edit1.Text);

  if Indx < 0 then Exit;

  Edit2.Text := sl.ValueFromIndex[Indx];
  Edit3.Text := IntToStr(Indx);

  sl.Free;
end;
  Mit Zitat antworten Zitat
marabu

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

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 19:53
Hast du wirklich die Leerstellen rund um den NameValueSeparator in deiner Datei? Dann geht auch das hier:

Delphi-Quellcode:
 
begin
  // ...
  index := MyList.IndexOfName(PlzEdit.Text + ' ');
  // edit: ValueFromIndex[] - und nicht ValueFromIndex()
  OrtEdit.Text := IfThen(index < 0, '', Trim(MyList.ValueFromIndex[index]);
  // ...
end;
Gute Nacht
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 20:05
Delphi-Quellcode:
{
  MyList = Deine StringList
  SucheNach = Nach was sollte gesucht werden?
  StartFrom = Von welchem Index sollte gesucht werden (evtl. Weitersuchen)
  CaseSentive = Groß- und Kleinbuchstaben unterscheiden
}

function IndexOf(const MyList: THashedStringList; SuchenNach: String; StartFrom: Integer = 0; CaseSensitive: Boolean = False): Integer;
var
  i: Integer;
  s: String;
begin
  Result := -1;
  for i := StartFrom to MyList.Count -1 do
  begin
    s := MyList[i];
    if not CaseSensitive then
    begin
      s := LowerCase(s);
      SuchenNach := LowerCase(SuchenNach);
    end;
    if Pos(SuchenNach, s) > 0 then
    begin
      Result := i;
      Exit;
    end;
  end;
end;

function NameOfIndex(const MyList: THashedStringList; Index: Integer): String;
begin
  Result := Trim(Copy(MyList[Index], Pos('=', MyList[Index]) +1, Length(MyList[Index])));
end;

function PLZOfIndex(const MyList: THashedStringList; Index: Integer): String;
begin
  Result := Trim(Copy(MyList[Index], 1, Pos('=', MyList[Index]) -1));
end;

function NameAndPLZOfIndex(const MyList: THashedStringList; Index: Integer): String;
begin
  Result := MyList[Index];
end;
und Bsp.
  ShowMessage(NameOfIndex(MyList, IndexOf(MyList, 'dres'))); Meintest du vielleicht soetwas?
  Mit Zitat antworten Zitat
Steven2

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

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 20:21
So viele Sourcen, es klappt nun

So schaut's aus:

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  MyList: THashedStringList;
  Index, i: Integer;
begin
  MyList := THashedStringList.Create;
  MyList.LoadFromFile(
    ExtractFilePath(Application.ExeName) + 'plzDat.txt');
  try
    begin
      for i := 0 to MyList.Count - 1 do
      begin
        index := MyList.IndexOfName(PlzEdit.Text + ' ');
        OrtEdit.Text := IfThen(index < 0, '', Trim(MyList.ValueFromIndex[index]));
      end;
    end;
  finally
    MyList.Free;
  end;
end;
Danke an alle !
  Mit Zitat antworten Zitat
marabu

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

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 20:26
Besser so:

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  MyList: THashedStringList;
  Index, i: Integer;
begin
  MyList := THashedStringList.Create;
  try
    MyList.LoadFromFile(ExtractFilePath(Application.ExeName) + 'plzDat.txt');
    index := MyList.IndexOfName(Trim(PlzEdit.Text) + ' ');
    OrtEdit.Text := IfThen(index < 0, '', Trim(MyList.ValueFromIndex[index]));
  finally
    MyList.Free;
  end;
end;
Und noch besser, wenn du die Liste nicht bei jedem Klick auf den Button erstmal laden musst. Lade sie doch einach nur einmal zu Beginn deines Programms.

Und herzlich willkommen in der DP, Steven.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#10

Re: Postleitzahl mit Ort verknüpfen

  Alt 17. Nov 2006, 20:32
Für was um Gottes Willen durchläufst du denn die ganze Stringlist ...
das reicht auch !!!

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  MyList: THashedStringList;
  Index: Integer;
begin
  MyList := THashedStringList.Create;
  MyList.LoadFromFile(
    ExtractFilePath(Application.ExeName) + 'plzDat.txt');
  try
    index := MyList.IndexOfName(PlzEdit.Text + ' ');
    If index > -1 Then
    OrtEdit.Text := Trim(MyList.ValueFromIndex[index]);
  finally
    MyList.Free;
  end;
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:45 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