Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Textdatei in Liste lesen und per idHTTP senden (https://www.delphipraxis.net/109590-textdatei-liste-lesen-und-per-idhttp-senden.html)

gene 4. Mär 2008 00:15


Textdatei in Liste lesen und per idHTTP senden
 
Hi, ich bins mal wieder, der Anfänger.

Ich möchte eine Textdatei in eine TListView oder Box oder sonst was einlesen ( 2 Spalten)..

Txt:

monitor1:marke1
monitor2:marke2
monitor3:marke3
etc..

also in der Liste soll dann die erste Spalte "monitor" und die zweite Spalte "marke" sein..

also er soll was vor dem : steht -> spalte1 und nach : spalte2 geben.

und dann mit einer Schleife per idHTTP diese 2 werte, also monitor1 und marke1 senden ( warum jetzt genau is glaub ich nicht wichtig ).

Meine Fragen:

Wie stell ich es am besten an dass er vor : und nach : importiert?

Und wie könnte ich dann die Liste am besten mit einer Schleife durchgehen?

Bin dankbar für jede Hilfe.

greetz gene

marabu 4. Mär 2008 07:28

Re: Textdatei in Liste lesen und per idHTTP senden
 
Moin Gene,

kennst du die Komponente ValueListEditor?

Delphi-Quellcode:
procedure CopyNamedValues(sFrom, sTo: TStrings);
var
  i: Integer;
begin
  sTo.BeginUpdate;
  try
    sTo.Clear;
    for i := 0 to Pred(sFrom.Count) do
      sTo.Values[sFrom.Names[i]] := sFrom.ValueFromIndex[i];
  finally
    sTo.EndUpdate;
  end;
end;

procedure TDemoForm.FormCreate(Sender: TObject);
var
  s: TStrings;
begin
  s := TStringList.Create;
  s.NameValueSeparator := ':';
  s.LoadFromFile('test.txt');
  CopyNamedValues(s, ValueListEditor.Strings);
  s.Free;
end;
Kannst du deine Delphi-Version in deinem DP-Profil nachtragen?

Grüße vom marabu

taaktaak 4. Mär 2008 07:48

Re: Textdatei in Liste lesen und per idHTTP senden
 
Moin, Moin.

Die Zeile
Delphi-Quellcode:
procedure CopyNamedValues(sFrom, sTo: TStrings);
irritiert mich jetzt etwas, marabu. Ich lebe in dem Glauben, dass bei dieser Parametereingabe innerhalb der Procedur mit einer lokalen Kopie von sTo gearbeitet wird; dass also, um sTo ausserhalb nutzen zu können, TStrings als var-Parameter mit

Delphi-Quellcode:
procedure CopyNamedValues(sFrom:TStrings;var sTo: TStrings);
übergeben werden müsste?! Habe ich da ein falsches Weltbild, oder ist das ein Tippfehler?

DeddyH 4. Mär 2008 07:53

Re: Textdatei in Liste lesen und per idHTTP senden
 
Objektreferenzen muss man nicht explizit als Var-Parameter übergeben, da es sich intern bereits um Zeiger handelt.

taaktaak 4. Mär 2008 07:57

Re: Textdatei in Liste lesen und per idHTTP senden
 
Oh, vielen Dank, dann habe ich ja in vielen Fällen unnötig viel getippt :|

gene 5. Mär 2008 00:09

Re: Textdatei in Liste lesen und per idHTTP senden
 
Vielen Danke marabu, du hast mich sehr viel weitergebracht.

Ich gebe ja wie oben beschrieben per IdHTTP die Daten weiter...

also idHTTP1.GET('http://genecrew.org?monitor=' +monitor1+ '&marke=' +marke1);

Das war jetzt ein Beispiel.

Wie könnte ich die Schleife laufen lassen dass sie immer Schlüssel1 & Wert1 aus der ValueListEdit synchron weitergibt, also Mon1+Mark1 etc. und nicht
Mon1+Mark3 zum Beispiel?

ps: hab jetzt meine Delphiversion im Profil eingetragen.

edit:// Ich hab jetzt etawas rumprobiert, mein Problem ist dass ich nicht weis wie ich das Maximum der Rows ermittle.

marabu 5. Mär 2008 08:13

Re: Textdatei in Liste lesen und per idHTTP senden
 
Moin,

vielleicht bringen dich diese Code-Zeilen noch etwas weiter:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
const
  FMT_URL = 'http://genecrew.org?monitor=%s&marke=%s';
var
  i: Integer;
  sHtml, sKey, sValue, url: string;
begin
  with ValueListEditor do
  for i := 1 to Pred(RowCount) do
  begin
    sKey := {IdURI.}TIdURI.ParamsEncode(Keys[i]);
    sValue := TIdURI.ParamsEncode(Values[sKey]);
    url := Format(FMT_URL, [sKey, sValue]);
    // sHtml := HTTP.Get(url);
  end;
end;
Freundliche Grüße

gene 6. Mär 2008 18:24

Re: Textdatei in Liste lesen und per idHTTP senden
 
Danke marabu, nach 4 stunde hin und her hab ichs geschafft :D

Bist ein Held!

greetz geNe


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