![]() |
Re: Strinlist
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
leider komme ich nicht ganz klar mit Deinem Codebeispiel ( bin mir sicher das es für Dich absolut logisch ist ). Die Werte PA BS 10 VA EZ...................EZ können völlg verschieden sein. Das einzig feste ist das immer 2 Werte von einem Leerzeichen unterbochen werden. "Leerwerte" also nur 2 Leerzeichen die von einem Leerzeichen "getrennt" werden bestehen leider auch. ( Siehe Anhang ) Besteht eine Möglichkeit die Positionen anzusprechen ( bin schon die ganze Zeit in der Online-Suche ). Danke für Eure Tipps Manfred |
Re: Strinlist
Hallo Manfred,
vielleicht ist dir hiermit eher geholfen:
Delphi-Quellcode:
Freundliche Grüße
var
i, iPos: Integer; // EDIT art, s: string; begin // ... with := udm.t_SVADR do begin art := := FieldByName('ART').AsString; for i := 1 to 12 do begin iPos := Succ(Pred(i) * 3); // EDIT s := Trim(Copy(art, iPos, 2)); if s = '' then FieldByName('ART_' + IntToStr(i)).Clear else FieldByName('ART_' + IntToStr(i)).AsString := s; end; end; end; |
Re: Stringlist
Hallo Marabu
bin am experimentieren mit dem Code den ich von Dir erhalten habe. An einem Punkt komme ich nicht ganz klar. Habe das ganze bis jetzt wie folgt angepasst:
Delphi-Quellcode:
mit dieser Zeile habe ich Probleme:
begin
// ... with fib_ds_svadr do begin art := FieldByName('ART').AsString; for anz := 1 to 12 do begin s := Trim(Copy(art, iPos ,2)); if s = '' then FieldByName('ART_' + IntToStr(anz)).Clear else FieldByName('ART_' + IntToStr(anz)).AsString := s; end; end; end;
Delphi-Quellcode:
Was ist iPos ?? habe schon mit Pos rumgetestet aber leider ohne den gewünschten Erfolg.
s := Trim(Copy(art, iPos ,2));
Hast Du hier noch einen Tipp. :oops: ( i habe ich durch anz ersetzt weil i schon verwendet wird ) Grüsse aus Basel Manfred |
Re: Stringlist
Ihr macht das alle viel zu kompliziert!
Delphi-Quellcode:
sl := TStringList.Create; // StringList erstellen
sl.Delimiter := ' '; // Trennzeichen einstellen sl.DelimitedText := input; while sl.Count < 12 do sl.Add(''); // <= der TRICK !! |
Re: Stringlist
Hallo Manfred,
eine wichtige Zeile habe ich offensichtlich vergessen hinzuschreiben:
Delphi-Quellcode:
Freundliche Grüße
for anz := 1 to 12 do
begin iPos := Succ(Pred(i) * 3); // Startposition im Gesamtstring s := Trim(Copy(art, iPos , 2)); // ... end; |
Re: Stringlist
In Ergänzung:
Du machts etwas ungewöhnliches, was mich interessiert ... -> Du verwendest extra ein Leerzeichen als Trenner Du solltest nun wissen, daß das Leerzeichen automatisch als Trenner betrachtet wird weann StrictDelimiter auf False steht, was Standard ist .... (Kommt da etwas durcheinenander wenn du auch ein Leerzeichen als Trenner benutzt ?) Also mit Delimiter=";" macht DelimitedText auch bei " " neue Lines... "A;B;C D E" führt zu den Zeilen "A","B","C","D","E" Vielleicht kannst du dein Problem mit der sechsten Stelle anstell erwartet 12 aufgrund der Leerzeichen damit lösen, daß du StrictDelimiter auf True setzt ? |
Re: Stringlist
Moin,
soweit ich Manfred verstanden habe, steht ein String im fixed format zur Verfügung - die Trennzeichen dienen lediglich der Optik. Insbesondere werden nicht besetzte Positionen ebenfalls durch Leerstellen gekennzeichnet.
Code:
Ansonsten würde ich für die Zerlegung die Eigenschaft CommaText verwenden, wie ich es bereits in Beitrag #7 gezeigt habe. Sie leistet ebenfalls die Zerlegung an Leerstellen und steht in allen Delphi-Versionen zur Verfügung, im Gegensatz zu StrictDelimiter und DelimitedText.
....+....0....+....2....+....3....+
PA BS 10 VA EZ EZ Freundliche Grüße |
Re: Stringlist
ES läuft !! :coder: :cheer:
Besten Dank für Eure Tipps und speziell Dir Marabu!! :balloon:
Delphi-Quellcode:
( i habe ich durch anz ersetzt weil i schon verwendet wird )
begin
with fib_ds_svadr do begin art := FieldByName('ART').AsString; for anz := 1 to 12 do begin iPos := Succ(Pred(anz) * 3); // Startposition im Gesamtstring s := Trim(Copy(art, iPos , 2)); if s = '' then FieldByName('ART_' + IntToStr(anz)).Clear else FieldByName('ART_' + IntToStr(anz)).AsString := s; end; end; end; Shalom Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz