Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delimiter-Strigliste abarbeiten (https://www.delphipraxis.net/214601-delimiter-strigliste-abarbeiten.html)

NoName1 6. Feb 2024 10:26

Delphi-Version: 5

Delimiter-Strigliste abarbeiten
 
Guten Tag,
Ich habe eine Stringliste (ManungenSL) mit mehreren Zeilen. Die Stringliste hat als Trenner ein Semikolon
Beispiel:
Delphi-Quellcode:
      j := 0;
      ibqryZeigeForderungen.First;
      for i := 1 to grdZeigeForderungen.RowCount - 1 do
        begin
          if grdZeigeForderungen.GetCheckBoxState(1, i, pState) then
            begin
              if pState then
                begin
                  ibqryZeigeForderungen.MoveBy(i - 1 - j); // muss zuerst (MoveBy verschiebt den Datensatz)

                  pSLInput := ibqryZeigeForderungenFORDAUS.AsString + ';'
                    + ibqryZeigeForderungenFORDERUNGSTXT.AsString + ';'
                    + FloatToStrF(ibqryZeigeForderungenFORDERUNG.AsCurrency, ffCurrency, 8, 2) + ';'
                    + FloatToStrF(ibqryZeigeForderungenOFFEN.AsCurrency, ffCurrency, 8, 2);
                  MahnungenSL.Delimiter := ';';
                  MahnungenSL.DelimitedText := pSLInput;
                  MahnungenSL.StrictDelimiter := True;

                  j := i - 1; // muss zuletzt
                end;
            end;
        end;
Der Quellcode macht was er soll!!

Ich möchte nun die einzelnen Zeilen der Stringliste abarbeiten.
Meine Versuche scheiterten bisher kläglich.
for i := 0 to strigliste.Count - 1
Liest nur die Spalten der letzten Zeile.

Meine Fragen dazu:
Wie wird der Zeige auf die erste Zeile gestellt?
Ist evtl. eine Delimiter-Liste falsch und eine "Zusammenhänge Liste" besser
oder gar ein Record?:gruebel:


Vielen Dank im Voraus an die Tippgeber.

Uwe Raabe 6. Feb 2024 10:37

AW: Delimiter-Strigliste abarbeiten
 
Mach doch bitte ein komplettes Beispiel mit Code der dein Problem nachvollziehen lässt. Die textuelle Beschreibung ist leider nicht eindeutig genug.

himitsu 6. Feb 2024 10:45

AW: Delimiter-Strigliste abarbeiten
 
Delphi-Quellcode:
SL.StrictDelimiter:=True;
, sonst werden auch Leerzeichen/Tabt/usw. als Delimiter betrachtet :wall:

Was für ein Curser?

Einmal mit FOR über jede Zeile und dann jede Zeile einzeln an dein DelimitetText zuweisen.
Delphi-Quellcode:
for i := 0 to StringListe.Count - 1 do begin
  SL.DelimitedText := StringListe[i];
  // hier in SL alle Werte der aktuellen Zeile
 

for var Line in StringListe do begin
  SL.DelimitedText := Line;
  // hier in SL alle Werte der aktuellen Zeile


und bitte [DELPHI]dein code[/DELPHI] benutzen

Uwe Raabe 6. Feb 2024 11:33

AW: Delimiter-Strigliste abarbeiten
 
Zitat:

Zitat von NoName1 (Beitrag 1533071)
Der Quellcode macht was er soll!!

Das sehe ich anders. Du erwartest, dass die Zuweisung
Delphi-Quellcode:
MahnungenSL.DelimitedText := pSLInput;
die Stringliste erweitert - tut sie aber nicht! Sie wird dagegen komplett ersetzt und enthält am Ende nur die Daten des letzten Records.

NoName1 6. Feb 2024 12:21

AW: Delimiter-Strigliste abarbeiten
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1533081)
Zitat:

Zitat von NoName1 (Beitrag 1533071)
Der Quellcode macht was er soll!!

Das sehe ich anders. Du erwartest, dass die Zuweisung
Delphi-Quellcode:
MahnungenSL.DelimitedText := pSLInput;
die Stringliste erweitert - tut sie aber nicht! Sie wird dagegen komplett ersetzt und enthält am Ende nur die Daten des letzten Records.

Danke für den Tipp.
Da eine Schleife durchlaufen wird, habe ich gedacht, es wird jedesmal eine neue Zeile erzeugt und hinzugefügt.
Das scheint aber nicht der Fall zu sein.Aber was soll stattdessen genommen werden?
Delphi-Quellcode:
MahnungenSL.ADD(pSLInput)
ist doch auch nicht richtig.

Uwe Raabe 6. Feb 2024 12:36

AW: Delimiter-Strigliste abarbeiten
 
Eine separate TStringList mit DelimitedText pro Datensatz befüllen und diese dann mit AddStrings an die bestehende anhängen.

himitsu 6. Feb 2024 12:59

AW: Delimiter-Strigliste abarbeiten
 
Was ist das für ein Grid?
etwa Delphis TStringGrid?

Wenn ja, dann gibt es dort doch je Row eine interne StringList (glaub ich),
von welcher man eventuell das DelimitedText aufrufen kann.
Das für jede Zeile machen und an eine neue StringListe als Zeile (Add) anhängen.


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