AGB  ·  Datenschutz  ·  Impressum  







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

String in gleichgroße Teile teilen

Ein Thema von DarkItachi · begonnen am 25. Dez 2010 · letzter Beitrag vom 26. Dez 2010
Antwort Antwort
DarkItachi

Registriert seit: 28. Dez 2009
Ort: Berlin
130 Beiträge
 
Delphi 2007 Enterprise
 
#1

AW: String in gleichgroße Teile teilen

  Alt 25. Dez 2010, 19:09
Warum denke ich nicht an so etwas leichtem??
Diesen Denkfehler werde ich ab sofort hassen

Danke Aphton

Edit:
Die fertige Funktion für jemanden, der sie evt. braucht..:

Delphi-Quellcode:
type
  TStrArray= array of string;

function SplitintoLetterParts(sInp: String; aLimit: Integer): TStrArray;
var
  i, j, b: Integer;
begin
   b:= 1;
   j:= 0;
   i:= (Length(sInp) div aLimit) + 1;
   if aLimit= Length(sInp) then
     dec(i);
   SetLength(Result, i);
 Repeat
   Result[j]:= Copy(sInp, b, aLimit);
   Inc(b, aLimit);
   Inc(j);
 Until
   b> Length(sInp);
end;
Developer since age 14

Geändert von DarkItachi (25. Dez 2010 um 20:05 Uhr)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

AW: String in gleichgroße Teile teilen

  Alt 26. Dez 2010, 05:56
Beim leeren String liefert die Funktion ein falsches Resultat.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: String in gleichgroße Teile teilen

  Alt 26. Dez 2010, 11:04
nimm eine While-Schleife und statt
Delphi-Quellcode:
i := (Length(sInp) div aLimit) + 1;
if aLimit = Length(sInp) then
  dec(i);
SetLength(Result, i);
lieber
Delphi-Quellcode:
i := (Length(sInp) + aLimit - 1) div aLimit;
SetLength(Result, i);
[add]
Delphi-Quellcode:
function SplitString(S: String; Limit: Integer): TStringDynArray;
var
  i: Integer;
begin
  i := (Length(S) + Limit - 1) div Limit;
  SetLength(Result, i);
  while i > 0 do begin
    Dec(i);
    Result[i] := Copy(S, i * Limit + 1, Limit);
  end;
end;
PS: Delphi-Referenz durchsuchenTStringDynArray
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Dez 2010 um 11:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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