AGB  ·  Datenschutz  ·  Impressum  







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

String zerlegen

Ein Thema von Luckie · begonnen am 11. Mai 2006 · letzter Beitrag vom 15. Mai 2006
Antwort Antwort
Seite 2 von 3     12 3      
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#11

Re: String zerlegen

  Alt 11. Mai 2006, 10:07
Ich glaube, marabu meinte, dass die Länge eines bestimmten Feldes in jedem Datensatz gleich lang ist. Also deinem Beispiel entsprechend UNTEEICH027 hat immer Länge 1, LIEFMMER029 hat immer Länge 6 etc. Die Leerzeichen hinter den Feldern (bzw. führenden Nullen) deuten darauf hin. Das wäre mal anhand deiner Beispiel-Datensätze zu überprüfen
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#12

Re: String zerlegen

  Alt 11. Mai 2006, 10:10
Das könnte sein. Hm, mal sehen, wa sich daraus bauen kann.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von bernau
bernau

Registriert seit: 1. Dez 2004
Ort: Köln
1.268 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: String zerlegen

  Alt 11. Mai 2006, 10:18
Eine Liste der Schlüsselwörter festlegen.

Delphi-Quellcode:
const
  MeineSchluesselwortliste: array [1..5] of string =('BELEMMER025','GESCEICH026','UNTEEICH027','LIEFMMER029','KUNDMMER032');

In dem String mit pos nach den Schlüsselwörtern suchen und vor den schlüsselwörtern in den String ein #13#10 einfügen. Danach in eine TStringlist einlesen.

Delphi-Quellcode:
var
  a:integer;
  x:integer;
....


  for x:=1 to 5 do
    begin
      a:=Pos(MeineSchluesselwortliste[x],DerDatenstring);
      if a>0 then
        insert(#13+#10,DerDatenstring,a);
    end;
   
   MeineStringliste.text:=derDatenstring;
Dann nacheinander mit MeineStringliste.IndexOfName die Werte herauspicken.


(Einfach runtergeschrieben. Nicht getestet.)

Gerd
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

Re: String zerlegen

  Alt 11. Mai 2006, 10:21
Das klingt genial. Wenns klappt, könnte ich dich küssen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#15

Re: String zerlegen

  Alt 11. Mai 2006, 10:25
vielleicht eine dumme Idee, aber wenn die Felder immer die gleiche Größe haben
könnte man doch auch mit einer record Struktur arbeiten:

Delphi-Quellcode:
TDataSet = record
  case boolean of
    true : s:String;
    false: a:String[10],
            b:string[15],
            c:string[10],
            d:string[1];
end;
Du kannst dann in TDataSet.s den ganzen String einlesen
und mit TDataSet.a das erste Feld auslesen, mußt es nur noch in Feldnamen und Wert trennen.

Nur so eine Idee.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#16

Re: String zerlegen

  Alt 11. Mai 2006, 10:31
Da die Namen der Felder aber im String vorkommen, geht das nicht so ohne Weiteres, sie müssten vorher entfernt werden
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: String zerlegen

  Alt 11. Mai 2006, 10:35
Zitat von OregonGhost:
Da die Namen der Felder aber im String vorkommen, geht das nicht so ohne Weiteres, sie müssten vorher entfernt werden :)
..das war mir schon bewußt.

Zitat von Klaus01:
das erste Feld auslesen, mußt es nur noch in Feldnamen und Wert trennen.
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#18

Re: String zerlegen

  Alt 11. Mai 2006, 10:37
@Klaus01

Deine Idee wird aber aus zwei anderen Gründen nicht funktionieren:
1.) dynamische Strings können in varianten Records nicht verwendet werden
2.) ShortStrings besitzen ein Längenbyte, das im Datenrecord nicht enthalten ist.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#19

Re: String zerlegen

  Alt 11. Mai 2006, 10:43
Das könnte auch funktionieren, aber bernaus Methode funktioniert, wie es scheint und sie ist schön einfach und das ist immer ein gutes Zeichen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#20

Re: String zerlegen

  Alt 11. Mai 2006, 10:51
Hab auch noch ein Codeschnippsel gefunden ...

Delphi-Quellcode:
function DoValueList (ZeiKett:string) : TStringList;
var
  s : String;
  i : integer;
begin
  s := ZeiKett;
  Result := TSTringList.Create;
  while pos ('=', s) > 0 do
  begin
    i := Length (s);
    while (s[i] <> '=') or (s [i-1] = ' ') do dec (i);
    while ((i > 0) and (s [i] <> ' ') ) do dec (i);
    Result.Insert(0, Trim(copy (s, i+1, Length (s))));
    delete (s, i +1, Length (s));
  end;
end;
Es wird ein String in eine ValueList zerlegt, ohne daß man die Names zuvor kennen muß.


Gruß

Thomas

PS:
@Lucki: Bei benraus Lösung solltest Du darauf achten, wirklich alle Schlüsselworte (auch die nicht ausgewerteten) in dem array zu haben, ansonsten könnten einige Values Müll enthalten.
Thomas Breitkreuz
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 15: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