AGB  ·  Datenschutz  ·  Impressum  







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

String an Position x ausgeben lassen

Ein Thema von SaFu · begonnen am 8. Okt 2009 · letzter Beitrag vom 8. Okt 2009
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#11

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:15
Der Code von mir oben liefert dir doch direkt die Zeile, in der die PLZ gefunden wurde. Diese ist noch in der Variablen aline gespeichert, wenn die Schleife verlassen wird. Das einzige was du noch machen müsstest ist, aus der Zeile den Stadtnamen zu isolieren. Dafür würd ich mir z.B. mal ansehen, mit welchem Zeichen die PLZ etc. getrennt sind in der Datei. Ich schätze mal, es ist ein Tabulator. Dann trennst du die Zeile anhand des Tabulators auf, und schon hast du deinen Stadtnamen.

Ist vielleicht nicht die performanteste Lösung, aber auf jedenfall einfacher zu verstehen als der Code, den du eben gepostet hast.

@ himitsu: Okay, wir haben ja alle genug speicher dafür, aber im Grunde ist die Datei doch ein bisschen sehr groß, um sie komplett in den Speicher zu laden...

//edit: Okay, es sind keine Tabulatoren als Trennzeichen, sondern Leerzeichen. Aber die Position (Anzahl der Zeichen vom Start der Zeile) der einzelnen Einträge ist immer gleich.

Den Stadtnamen kannste also z.B. so erhalten:

Delphi-Quellcode:
function PLZtoStadt(afilename:string;gesuchte_PLZ:string):string;
var T:Textfile;
    found_PLZ:boolean;
    aline:string;
begin


found_PLZ:=false;
assignfile(T,afilename);

reset(T);
while (not eof(T)) and (not found_PLZ) do
begin
   readln(T,aline);
   if pos(gesuchte_PLZ,aline)>0 then found_PLZ:=true;
end;

closefile(T);

result:=trim(copy(aline,0,45)); //Liefert den Stadtnamen zurück.

end;
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:25
Delphi-Quellcode:

var T:Textfile;
    found_PLZ:boolean;
    gesuchte_PLZ:string;
    aline:string;
begin

 gesuchte_PLZ:='52067';
 found_PLZ:=false;

 assignfile(T,'bla.txt');

 reset(T);
 while (not eof(T)) and (not found_PLZ) do
 begin
   readln(T,aline);
   if pos(gesuchte_PLZ,aline)>0 then found_PLZ:=true;
 end;

 closefile(T);

end;
Naja wenn ich das so mache weis der Code doch immer noch nicht in welcher Zeile die PLZ steht
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#13

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:29
Die steht doch dann in aline.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#14

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:29
Zitat von fuknersascha:

Naja wenn ich das so mache weis der Code doch immer noch nicht in welcher Zeile die PLZ steht
1. Ist das nicht wahr (wenn du tatsächlich die Zeile bräuchtest - was du nicht tust - könntest du nen interger hochzählen lassen)
2. Habe ich dir gerade die Funktion fertig programmiert. Siehe Post #11

//edit:

Danke für deine Unterstützung @DeddyH
Außerdem möchte ich noch eine Anregung einwerfen: Bei meiner schönen Stadt erstrecken sich die Postleitzahlen über einen ganzen PLZ-Bereich. In der txt steht dann:

Stadt XYZ XXXXX-YYYYY

Wenn du eine Postleitzahl suchst, die zwischen diesen beiden Werten liegt, wirst du sie nicht finden. D.h. hier müsste man noch etwas fine-tuning machen.
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:36
Wenn ich mir aline in einem edit ausgeben lasse bekomme ich immer die Daten der ersten Zeile angezeigt
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#16

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:42
Zitat von fuknersascha:
Wenn ich mir aline in einem edit ausgeben lasse bekomme ich immer die Daten der ersten Zeile angezeigt
Das kann nicht sein. Guck nochmal genau nach. Ich habe gerade die Funktion aus Beitrag #11 in Delphi kopiert und sie funktioniert wunderbar. Ich gebe eine PLZ ein (die muss natürlich in der TXT Datei vorkommen) und bekomme die Stadt als string zurück) - Vielleicht brauchst du ein Edit.refresh oder sowas?
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: String an Position x ausgeben lassen

  Alt 8. Okt 2009, 16:50
Jetzt hab ich es nochmal neu geschrieben und siehe da es funzt. Danke
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:24 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