AGB  ·  Datenschutz  ·  Impressum  







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

Stringlist

Ein Thema von manfred_h · begonnen am 5. Feb 2008 · letzter Beitrag vom 8. Feb 2008
Antwort Antwort
Seite 2 von 2     12   
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#11

Re: Strinlist

  Alt 6. Feb 2008, 14:45
Zitat von marabu:
Delphi-Quellcode:
with TStringList.Create do
try
  CommaText := udm.t_SVADR.FieldByName('ART').AsString;
  for i := 0 to Pred(Count) do
    FieldByName('ART_' + IntToStr(Succ(AnsiIndexText(Strings[i], [
      'AK', 'SH', '36', 'VA', 'DV', 'EZ{ ... }
    ])))).AsBoolean := True;
finally
  Free;
end;
Hallo Marabu
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
Miniaturansicht angehängter Grafiken
leerzeichen_293.jpg  
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Strinlist

  Alt 6. Feb 2008, 18:25
Hallo Manfred,

vielleicht ist dir hiermit eher geholfen:

Delphi-Quellcode:
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;
Freundliche Grüße
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#13

Re: Stringlist

  Alt 7. Feb 2008, 16:47
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:
         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;
mit dieser Zeile habe ich Probleme:
s := Trim(Copy(art, iPos ,2)); Was ist iPos ?? habe schon mit Pos rumgetestet aber leider ohne den gewünschten Erfolg.
Hast Du hier noch einen Tipp.
( i habe ich durch anz ersetzt weil i schon verwendet wird )

Grüsse aus Basel
Manfred
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#14

Re: Stringlist

  Alt 7. Feb 2008, 16:50
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 !!
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Stringlist

  Alt 7. Feb 2008, 17:29
Hallo Manfred,

eine wichtige Zeile habe ich offensichtlich vergessen hinzuschreiben:

Delphi-Quellcode:
for anz := 1 to 12 do
begin
  iPos := Succ(Pred(i) * 3); // Startposition im Gesamtstring
  s := Trim(Copy(art, iPos , 2));
  // ...
end;
Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#16

Re: Stringlist

  Alt 8. Feb 2008, 05:33
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 ?
Peter Schaible
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: Stringlist

  Alt 8. Feb 2008, 05:51
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:
....+....0....+....2....+....3....+
PA BS 10 VA EZ                  EZ
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.

Freundliche Grüße
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#18

Re: Stringlist

  Alt 8. Feb 2008, 09:26
ES läuft !!

Besten Dank für Eure Tipps und speziell Dir Marabu!!

Delphi-Quellcode:
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;
( i habe ich durch anz ersetzt weil i schon verwendet wird )

Shalom
Manfred
  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 14:51 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