![]() |
String alle X Zeichen splitten
hey,
zualler erst mal Hallo, ich bin neu in diesem forum und programmiere seit gut 1/2 jahren in delphi (wegen dem informatik untericht in der schule) ich kann leider noch nciht so viel und habe jetzt eine Frage bezüglich von Strings. ich möchte den String aus einem MemoFeld alle X(also ne Variable) Zeichen trennen. ich habe durch die suche imemr nur das trennen an bestimmten Zeichen gefunden und frag deswegen noch einmal. ichh offe ihr könnt mir helfen. Danke schonmal ps. ich wusste einfach nicht in welches unterforum meine frage gehört *sorry* |
Re: String alle X Zeichen splitten
Willkommen!
Idee: Du könntest das "Trennen an einer bestimmten Stelle" doch wiederholen. Andere Idee: Multipliziere die Variable, um die Trennstellen zu erhalten, und nimm ab dort die nächsten X Zeichen. Die Routine Copy könnte Dir helfen. |
Re: String alle X Zeichen splitten
hey,
daNKE erstmal für die antwort könntest du mir genauer sagen wie du das meisnt ? ich versteh es nämlich immernoch nicht ^^ lg ^^ |
Re: String alle X Zeichen splitten
Ein Ansatz, im Blindflug getippt:
Delphi-Quellcode:
Eventuell sind noch einige Tippfehler drin...
program Demo;
{$AppType Console} uses SysUtils, Classes; type EOutOfBounds = class(Exception); function SplitStr(var Str: String; const X: Integer): String; begin if (X < 1) or (X > Length(Str)) then raise EOutOfBounds.CreateFmt('SplitStr: X nicht in [%d..%d].',[1,Length(Str)]); Result:=Copy(Str,1,X); Str:=Copy(Str,X+1,Length(Str)-X); end; procedure SplitStrAll(Str: String; const X: Integer; const StringList: TStringList); begin StringList.Clear; while Length(Str) > X do StringList.Add(SplitStr(Str,X)); if Lengh(Str) > 0 then StringList.Add(Str); end; procedure WriteStringList(const StringList: TStringList); var Index: Integer; begin with StringList do for Index:= 0 to Count-1 do WriteLn(Items[Index]); end; var Str: String; StringList: TStringList; begin Str:='0123456789'; StringList:=TStringList.Create; try SplitStrAll(Str,3,StringList): WriteStringList(StringList); finally StringList.Free; end; WriteLn('Enter drücken...'); ReadLn; end. Viel Spaß beim Lernen! |
Re: String alle X Zeichen splitten
Ein Blick in die Library erspart oft einige Tipparbeit...
![]() ![]() ![]() 3 fertige Lösungen... :roll: |
Re: String alle X Zeichen splitten
Hm, irgendwie machen diese drei Lösungen etwas anderes...
Und im wesentlichen kommt es doch nur auf das Teilen und die Wiederholung an:
Delphi-Quellcode:
Jetzt hab ich's ja doch verraten... Naja, der Umbau gehört ja dann doch zur Demonstration dazu...
// Teilen, SplitStr
Result:=Copy(Str,1,X); Str:=Copy(Str,X+1,Length(Str)-X); // Wiederholung, SplitStrAll while Length(Str) > X do { ... } |
Re: String alle X Zeichen splitten
:oops: Ups, ich sollte schlafen gehen, ich hab das nicht richtig verstanden, Sorry.
|
DP-Maintenance
Dieses Thema wurde von "Sharky" von "Datenbanken" nach "Sonstige Fragen zu Delphi" verschoben.
Könnte auch nach Object-Pascal. Aber in keinem Fall in die Datenbanksparte ;-) |
Re: String alle X Zeichen splitten
hey
erstaml vielen dank für die verschiebung und die schnelle hilft. ich bin wohl doch noch viel zu schlecht für sowas -.- also ich wollte den Text eines Memo-Feldes verschleiern. d.h. ich wollte 'A' durch z.b. 4 Zahlen ersetzten. nun müsste ich das hinterher aber auch wieder rückgängig machen könen ... und das schaff ich nicht .... ich danke ich bin vllt doch noch zu schlecht für sowas und würde mich über eine hilfe sehr freuen, ansonsten lernen ich lieber erst noch merh .... lg^^ |
Re: String alle X Zeichen splitten
Moin,
das was du vorhast, geht auch einfacher! Wie ersetzt du denn das A durch die 4 Zahlen? Dazu muss es ja irgendwie eine Zuordnungstabelle als A <-> 1234 B <-> 2567 oder was auch immer geben. Dann kannst du auf deinen String ein simples StringReplace(str, 'A', '1234', [rfReplaceAll]) anwenden, um den Text zu "verschlüsseln". Nun, um ihn wieder zu entschlüsseln... machst du halt genau das Umgekehrte, nämlich StringReplace(str, '1234', 'A', [rfReplaceAll]). Und schwupp hast du wieder das Original ;) ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09: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