AGB  ·  Datenschutz  ·  Impressum  







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

String umdrehen

Ein Thema von JuiceRob · begonnen am 27. Feb 2011 · letzter Beitrag vom 6. Mär 2011
Antwort Antwort
JuiceRob

Registriert seit: 27. Feb 2011
2 Beiträge
 
#1

String umdrehen

  Alt 27. Feb 2011, 16:35
Delphi-Version: 2005
Hi,
hab hier einen Auftrag für die Schule aber ich komm kein Stück weiter und bei Google find ich auch nichts.

Wir sollten erst ein Wort umdrehen d.h. aus "Hallo" wird "ollaH".
Mit ReverseString kein Problem.

Jetzt sollen wir aber in einem Satz die Wörter einzeln umdrehen d.h. aus "Hallo wie gehts" wird "ollaH eiw stheg".

Hab jetzt schon bei Google ne weile gesucht aber nichts gefunden was mich weiter bringt.

Ich benutz auch noch Delphi 2005, weil wir das auch in der Schule benutzen...

Schon mal Danke für die Hilfe.
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#2

AW: String umdrehen

  Alt 27. Feb 2011, 16:39
Die ReverseString Funktion ist doch perfekt dafür. Du musst dir zusätzlich eine Schleife bauen die einen TempStr ließt (immer bis zum nächsten Leerzeichen) und diesen einzeln umwandelt.

Wo ist das Problem ?
  Mit Zitat antworten Zitat
JuiceRob

Registriert seit: 27. Feb 2011
2 Beiträge
 
#3

AW: String umdrehen

  Alt 27. Feb 2011, 16:46
gibt keins mehr danke trotzdem =)
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#4

AW: String umdrehen

  Alt 27. Feb 2011, 17:02
Hab nochmal ein kleines Bsp aus meinen Übungen ausgekramt. Geht aber mit Sicherheit noch sinnvoller

Delphi-Quellcode:
function StringReverse(S:String):String;
var
  i: Integer;
begin
  Result:='';
  for i:=Length(S) downto 1 do
  Begin
    Result:=Result+Copy(S,i,1);
  end;
end;

function SentenceReverse(S:String):String;
var
  i,Pos1: Integer;
  tmpStr: String;
begin
  Result:='';
  repeat
    Pos1:=Pos(' ',S);
    if Pos1>0 then
      tmpStr:=Copy(S,1,Pos1-1) else
      tmpStr:=S;
    tmpStr:=StringReverse(tmpStr);
    if not (tmpStr=StringReverse(S)) then
      Result:=Result+tmpStr+' else
      Result:=Result+tmpStr;
    S:=Copy(S,Pos1+1,Length(S));
  until
    Pos1=0;
end;
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#5

AW: String umdrehen

  Alt 27. Feb 2011, 17:58
kleine Verbesserung: Result:=Result+Copy(S,i,1); -> Result:=Result + S[i]; .

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#6

AW: String umdrehen

  Alt 27. Feb 2011, 20:32
Hätte auch noch ne Variante

Delphi-Quellcode:
Function StringReverse(S: String): String;
Var
  i: Integer;
  c: Char;
Begin
  For i := 1 To length(s) Div 2 Do Begin
    c := s[i];
    s[i] := s[length(s) - i + 1];
    s[length(s) - i + 1] := c;
  End;
  result := s;
End;
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von dor557
dor557

Registriert seit: 24. Okt 2004
Ort: Walldorf
197 Beiträge
 
Delphi 10.1 Berlin Starter
 
#7

AW: String umdrehen

  Alt 6. Mär 2011, 18:57
Hier mal meinen Senf dazu... Habe das getestet. Ist sicherlich Fähig zu optimieren

Ich benutze immer eine Funktion die sich Explode nennt da ich viel mit arrays arbeite

hier mal mein Code :

Delphi-Quellcode:
  TSTringdynarray = array of String;
var
  Form1: TForm1;
  WechselText : TStringDynArray;

function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray;
var
  SepLen: Integer;
  F, P: PChar;
  ALen, Index: Integer;
begin
  SetLength(Result, 0);
  if (S = '') or (Limit < 0) then Exit;
  if Separator = 'then
  begin
    SetLength(Result, 1);
    Result[0] := S;
    Exit;
  end;
  SepLen := Length(Separator);
  ALen := Limit;
  SetLength(Result, ALen);

  Index := 0;
  P := PChar(S);
  while P^ <> #0 do
  begin
    F := P;
    P := AnsiStrPos(P, PChar(Separator));
    if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F);
    if Index >= ALen then
    begin
      Inc(ALen, 5);
      SetLength(Result, ALen);
    end;
    SetString(Result[Index], F, P - F);
    Inc(Index);
    if P^ <> #0 then Inc(P, SepLen);
  end;
  if Index < ALen then SetLength(Result, Index);
end;

procedure TForm1.Button1Click(Sender: TObject);
var I : Integer;
begin
 Edit2.text := '';
  WechselText := Explode(' ',Edit1.text);
  for I := 0 to Length(WechselText) - 1 do
  begin
    WechselText[i] := ReverseString(Wechseltext[i]);
    Edit2.text := Wechseltext[i] + ' ' + Edit2.text;
  end;
end;
Hoffe das ich jetzt nicht deine Hausaufgaben gemacht habe

gruss Sascha
Sascha Nickel
Man muss die Dinge nehmen wie sie kommen, man kann aber auch dafür sorgen das die dinge so kommen wie man sie nehmen möchte.
  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 07:41 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 by Thomas Breitkreuz