AGB  ·  Datenschutz  ·  Impressum  







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

Einen Komma-Text richtig trennen.

Ein Thema von gunfran · begonnen am 14. Feb 2008 · letzter Beitrag vom 3. Apr 2008
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von TERWI
TERWI

Registriert seit: 29. Mär 2008
Ort: D-49626
381 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: Einen Komma-Text richtig trennen.

  Alt 2. Apr 2008, 15:35
Ein wenig TERWI-Senf dazu...
Diese Funktion nutze ich schon seit ner kleinen Ewigkeit, um Strings - z.B. durch Komma oder andere Zeichen getrennt - zu zerlegen.
Kann man dann logo auch rekursiv auf die Ergebnisse anwenden ...
Delphi-Quellcode:
function SplitStr(T : char; var S : string) : string;
var
  p : integer;
begin
  Result := S; // Result ist zunächst S unverändert !
  if s = 'then exit; // ... da gibts nix zu trennen
  p := Pos(T, S); // Position des Trennzeichens 'T' ermitteln
  if p > 1 then // Trennzeichen ist vorhanden !
  begin // > JA
    Result := trim(Copy(S,1,p-1)); // Bis zum Trennzeichen aus S nach Result kopieren (links)
    S := trim(Copy(S,p+1,Length(S))); // Rest nach Trennz. in S zurückgeben (rechts)
  end
  else S := ''; // Kein Trenner - Result (links) ist S und S (rechts) ist leer
end;
Da würde ich gunfran's Beispiel erst mal grob nach Kommata zerlegen
Und dann weiter den Wert in {} ermitteln... Nur ne grobe Idee, nicht getestet !
Delphi-Quellcode:
...
  s_org := 'BORKUM{61}, BLA2{60}, REL{62}, EN/NORD{72}, ESSEN{59}, TRINKEN{70}, HERNE{71}, HSK1{67}, MAMA123{65}, KW/DINSL{64}, OBERHAUSEN{66}, EN/SÜD{73}, KW/MOERS{63}, HSK2{68}, HSK3{69}';
  repeat
    s_result := SplitStr(',', s_org);
    s_rest := s_result; // Edit: ... sonst wird das nix mit repeat until.
    // s_result prüfen... entweder leer oder was gültiges vor dem ','
    // ggf. noch mal ein SplitStr('/', s_result) darauf um für ein '/' zu trennen.... Achtung: s_result wird verändert !
    s_temp := SplitStr('{',s_result); // die {-Klammer vorne weg und den Rest erhalten
    // mach was mit s_temp vor dem {
    SetLength(s_result, Length(s_result - 1)); // die }Klammer hinten weg --- EDIT: Korrgiert...
    // mach hier was mit s_result
  until s_rest = '';
  // Edit: oder until (Pos(',', s_org) < 1);
Idee ohne Gewehr zum selber selbsterschiessen / weiterdenken...

PS: Ich bin da nicht so der Performance-Kasper. Sollte logo schon zügig gehen... Aber mit der SplitStr-Func habe ich schon relativ dicke Daten im xx-MB-Format durchwurstet und ich würde mach dumpf behaupten, das da die Platte (von der gelesen wurde) eher das langsamste Teil in der Kette war...
  Mit Zitat antworten Zitat
2. Apr 2008, 15:48
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage
grenzgaenger
(Gast)

n/a Beiträge
 
#23

Re: Einen Komma-Text richtig trennen.

  Alt 2. Apr 2008, 22:45
und hast dir das auch schon mal angesehen? müsst eigentlich ziemlich genau deinen bedarf treffen...
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#24

Re: Einen Komma-Text richtig trennen.

  Alt 3. Apr 2008, 06:58
Zitat von TERWI:
und ich würde mach dumpf behaupten, das da die Platte (von der gelesen wurde) eher das langsamste Teil in der Kette war...
Bestimmt, nur wenn die Daten schon im Speicher sind oder per TCPStream reintrudeln, möchte man im Server keine unnötigen CPU-Zyklen, denn wenn viele Threads gleichzeitig rumsplitten, dann geht der Server -pardauz- in die Knie. Insofern muss man immer nach möglichst effizienten Verfahren suchen. Dein Verfahren ist sehr aufwändig, denn es wird ständig unwichtiges Zeugs hin-und-her kopiert.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#25

Re: Einen Komma-Text richtig trennen.

  Alt 3. Apr 2008, 12:25
Das Wort "feste Feldlänge" ist noch nicht gefallen. Damit sind Trennzeichen-Probleme ein für allemal aus der Welt geschafft. Selbst dann wenn ein DAU "Herr M;ller" als Name gespeichert hat. Das Komma selber ist wegen Dezimalzahlen sowieso auszuschließen.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 16:01 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