AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Lange Strings (> 255 zerlegen und in Stringliste übernehmen
Thema durchsuchen
Ansicht
Themen-Optionen

Lange Strings (> 255 zerlegen und in Stringliste übernehmen

Ein Thema von Helmutf · begonnen am 14. Mär 2006 · letzter Beitrag vom 15. Mär 2006
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.568 Beiträge
 
Delphi 12 Athens
 
#9

Re: Lange Strings (> 255 zerlegen und in Stringliste übe

  Alt 15. Mär 2006, 10:45
Also, da es in dem ersten Code eh keine ShortStrings gab, hätten eine kleine Änderung alles gelöst.

In dieser Zeile entweder die 255 entfernen, also durch Length(H) - t, oder da Copy eh die Länge nochmal überprüft/anpasst auch Length(H), oder einfach nur MaxInt.
H := copy(H,t+1,255); // Reststring Oder ganz einfach, warum Copy, wenn ein Delete eh besser wärde
(also einfach die Zeile durch folgende erstetzt und fertsch)
Delete(H, 1, t); // Reststring

PS: da SText eh nicht als const/var definiert ist, kann ja auch gleich damit gearbeitet werden, dezu war S eh nicht nätig, also wie gefällt dir dann das?
Delphi-Quellcode:
function Zerlege(SText: String): TStrings;
  var t: Integer;
  begin
     Result := TStringList.Create;

     // Baue Stringliste auf
     while length(SText) > 0 do
     begin
        t := Pos(';' , SText);
        if t > 0 then
        begin
          Result.Add(Copy(SText, 1, t - 1));
          Delete(SText, 1, t);
        end
        else
          Result.Add(SText);
     end;
  end;
Oder mal ohne den String zu verändern ...
Delphi-Quellcode:
function Zerlege(const SText: String): TStrings;
  var t, t2: Integer;
  begin
     Result := TStringList.Create;

     // Baue Stringliste auf
     t := 1;
     while length(SText) > 0 do
     begin
        t2 := PosEx(';' , SText, t + 1);
        if t2 = 0 then t2 := length(SText) + 1;
        Result.Add(Copy(SText, t + 1, t2 - t - 1));
        t := t2;
     end;
  end;
Ich weiß, PosEx gibt's noch nicht, aber in der CodeLib hab'sch dafür ja den Ersatz hinterlegt


Oder ganz einfach:
wenn dir der Code von Der_Unwissende nicht gefällt:
Delphi-Quellcode:
function Zerlege(const SText: String): TStrings;
  begin
     Result := TStringList.Create;
     Result.Lines.Text := StringReplace(SText, ';', #13#10, [rfReplaceAll]);
  end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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