AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

String zerlegen

Ein Thema von Luckie · begonnen am 11. Mai 2006 · letzter Beitrag vom 15. Mai 2006
 
TBx
(Administrator)

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

Re: String zerlegen

  Alt 15. Mai 2006, 08:45
Ok, hier kommt der Code nochmal kommentiert:

Delphi-Quellcode:
function DoValueList (ZeiKett:string) : TStringList;
// ****************************************************************************
// Auflösen einer Zeichenkette des Formates "NAME1=WERT1 NAME2=WERT2
// NAME3=WERT3 ......"
// in eine StringList
// ****************************************************************************
// erstellt von Thomas Breitkreuz
// email: [email]tbreitkreuz@breitkreuz-datentechnik.de[/email]
// Codeschnippsel zur Benutzung für Jedermann freigegeben
// ****************************************************************************
var
  s : String;
  i : integer;
begin
  s := ZeiKett;
  Result := TSTringList.Create;
  // ausführen, solange NAME=VALUE - Paare vorhanden sind (diese werden wärend
  // der Bearbeitung laufend aus der Zeichenkette gelöscht
  while pos ('=', s) > 0 do
  begin
    i := Length (s);
    // vom Ende des Strings an solange zurückgehen, bis ein = Zeichen ohne
    // führendes Leerzeichen gefunden wird, es wird davon ausgegangen, daß
    // das = Zeichen dem NAME unmittelbar folgt, dadurch können auch
    // = Zeichen in den Values vorhanden sein, sofern ein Leerzeichen vorgesetzt
    // ist
    while (s[i] <> '=') or (s [i-1] = ' ') do dec (i);
    // nun wird von dem gefundenen = Zeichen aus das nächste Leerzeichen bzw.
    // der Anfang der Zeichenkette gesucht, es wird davon ausgegangen, daß
    // jedem NAME, der nicht am Anfang der Zeichenkette steht, ein Leerzeichen
    // vorausgeht
    while ((i > 0) and (s [i] <> ' ') ) do dec (i);
    // Jetzt wird das gefundene NAME=VALUE-Paar als ersten Eintrag in die
    // Resultliste eingefügt
    Result.Insert(0, Trim(copy (s, i+1, Length (s))));
    // und dann aus der Zeichenkette gelöscht
    delete (s, i +1, Length (s));
    // sollte vor dem ersten NAME=VALUE-Paar noch etwas stehen, so wird dies
    // hier ausgeschnitten und unter dem NAME "$$$TRAILER$$$" in die Resultliste
    // eingefügt
    if (i = 0) and (Length (s) > 0) then
    begin
      Result.Insert(0, '$$$TRAILER$$$=' + Trim (s);
      s := '';
    end;
  end;
end;
Beim Kommentieren ist mir noch eine Unzulänglichkeit aufgefallen: Die Funktion verharrte in einer Endlosschleife, wenn am Anfang der Zeichenkette ein ' =' vor einem "NAME=" vorkam.
Deshalb habe ich noch den Trailer eingeführt.

Ich hoffe, meine Erklärungen sind ausreichend, ansonsten bitte nachfragen.

btw: Hat einer ne Idee, unter welchem Titel man das in die Codelib stellen könnte?

Gruß

Thomas
[Edit] Delphi-Kommentar korrigiert [/Edit]
Thomas Breitkreuz
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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