Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String alle X Zeichen splitten (https://www.delphipraxis.net/131678-string-alle-x-zeichen-splitten.html)

gangs-taas 28. Mär 2009 19:27


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*

Panthrax 28. Mär 2009 19:33

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.

gangs-taas 28. Mär 2009 20:56

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 ^^

Panthrax 28. Mär 2009 21:24

Re: String alle X Zeichen splitten
 
Ein Ansatz, im Blindflug getippt:
Delphi-Quellcode:
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.
Eventuell sind noch einige Tippfehler drin...

Viel Spaß beim Lernen!

jaenicke 28. Mär 2009 21:34

Re: String alle X Zeichen splitten
 
Ein Blick in die Library erspart oft einige Tipparbeit...
http://www.delphipraxis.net/internal...t.php?p=186130
http://www.delphipraxis.net/internal...t.php?p=484581
http://www.delphipraxis.net/internal...ct.php?p=27344
3 fertige Lösungen... :roll:

Panthrax 28. Mär 2009 22:13

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:
// Teilen, SplitStr
  Result:=Copy(Str,1,X);
  Str:=Copy(Str,X+1,Length(Str)-X);
// Wiederholung, SplitStrAll
  while Length(Str) > X do
  { ... }
Jetzt hab ich's ja doch verraten... Naja, der Umbau gehört ja dann doch zur Demonstration dazu...

jaenicke 28. Mär 2009 22:44

Re: String alle X Zeichen splitten
 
:oops: Ups, ich sollte schlafen gehen, ich hab das nicht richtig verstanden, Sorry.

DP-Maintenance 29. Mär 2009 06:43

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 ;-)

gangs-taas 29. Mär 2009 07:58

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^^

Meflin 29. Mär 2009 11:30

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 ;)

http://www.delphibasics.co.uk/RTL.as...=StringReplace


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:06 Uhr.
Seite 1 von 2  1 2      

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