Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wertepaare aus Textdatei lesen ? (https://www.delphipraxis.net/86066-wertepaare-aus-textdatei-lesen.html)

winx 8. Feb 2007 15:05


Wertepaare aus Textdatei lesen ?
 
Hallo,

gibt es eine Komponente die mir auf einfachste Art und weise Wertepaare aus einer Textdatei lesen kann?
Die Textdatei sieht dabei so aus:

Hallo=P
Du=Q
Ich = K

Spaces sollen überflogen werden...

Gibt es sowas schon?

Danke,
winx

Klaus01 8. Feb 2007 15:12

Re: Wertepaare aus Textdatei lesen ?
 
Ja, gibt es die TStringList, schau da mal nach Value.

Grüße
Klaus

marabu 8. Feb 2007 19:03

Re: Wertepaare aus Textdatei lesen ?
 
Hallo,

die bei D7 mitgelieferte TStrings-Implementierung ist wenig intelligent, was white space betrifft. Steuerdateien unterziehe ich deshalb oft einer Normalisierung:

Delphi-Quellcode:
procedure TrimNameValueStrings(s: TStrings);
var
  i, iPos: Integer;
begin
  for i := 0 to Pred(s.Count) do
  begin
    iPos := AnsiPos(s.NameValueSeparator, s[i]);
    if iPos > 0 then
      s[i] := Trim(Copy(s[i], 1, Pred(iPos)))
            + s.NameValueSeparator
            + Trim(Copy(s[i], Succ(iPos), MaxInt));
  end;
end;
Wer eine neuere Implementierung einsetzt, der prüfe ob die Funktionalität in dieser Hinsicht erweitert wurde.

Grüße vom marabu

Klaus01 8. Feb 2007 20:58

Re: Wertepaare aus Textdatei lesen ?
 
Hallo Achim,

ein kleiner Test hat ergeben, das es funktionieren sollte:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  sl: TStringList;
begin
  sl := TStringList.create;
  sl.LoadFromFile('d:\st_test.txt');
  edit1.Text:=st.Values['1'];
  sl.Free;
end;
Inhalt der TextDatei:

1=test string
2=test2 string2

liefert im Edit "test string"

Grüße
Klaus

marabu 8. Feb 2007 21:10

Re: Wertepaare aus Textdatei lesen ?
 
Hallo Klaus,

die Testfälle im ersten Beitrag zeigen mir, dass winx schon genau weiß wo es klemmt. Es geht nicht um embedded blanks im Value. Probiere mal mit freigestelltem Separator und du wirst verstehen um was es geht.

Gute Nacht

Klaus01 8. Feb 2007 21:15

Re: Wertepaare aus Textdatei lesen ?
 
Hallo Achim,

wie konnte ich nur widersprechen, hast recht!
Leerzeichen am Ende des KeyValues mag es nicht.

Auch gute Nacht.

Grüße
Klaus

winx 9. Feb 2007 10:02

Re: Wertepaare aus Textdatei lesen ?
 
Hallo,

erstmal danke für eure Hilfe!!!

Delphi-Quellcode:
procedure TStandardValuesController.readDependancies();
var list : TStringList;
    i : integer;
    dependancy : TKTipDependancy;
begin

  list := TStringList.Create();
  list.LoadFromFile(m_KTIPDependancyFilePath);

  for i:=0 to list.Count-1 do begin
     dependancy := TKTipDependancy.create('','');
     dependancy.QualityBarcode := list. ???
     dependancy.Sign          := list.Values[dependancy.QualityBarcode];
     m_KTIPDependancies.Add(dependancy);
  end;

end;
Wie bekomme ich denn den Text vor dem =

Also ich komm an das P ran bei 4711=P aber eben nich an die 4711...

geht das auch einfach oder muß ich den String parsen?

Danke

marabu 9. Feb 2007 10:14

Re: Wertepaare aus Textdatei lesen ?
 
Hallo,

wenn du die eingelesene Name-Value-Liste nur für die Initialisierung deiner dependancy-Objekte verwendest, dann kannst du auch so vorgehen:

Delphi-Quellcode:
procedure TStandardValuesController.readDependancies();
var list : TStringList;
    i : integer;
    dependancy : TKTipDependancy;
begin

  list := TStringList.Create();
  list.LoadFromFile(m_KTIPDependancyFilePath);

  for i :=0 to list.Count-1 do
  begin
     dependancy := TKTipDependancy.create('','');
     dependancy.QualityBarcode := Trim(list.Names[i]);
     dependancy.Sign          := Trim(list.Values[dependancy.QualityBarcode]);
     m_KTIPDependancies.Add(dependancy);
  end;

end;
Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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