![]() |
Buchstaben an andere Stelle setzten
Hi,
also.. ich möchte in einem String z.B. den 2. Buchstaben (Buchstabe:=Text[2]) an eine andere z.B. die 1. Stelle setzten. Also z.B.: aus 'Hallo' 'aHllo' oder die 2. an die 3. stelle: aus 'Hallo' 'Hlalo'. Also wie man den Buchstaben herausfindet weiß ich ja, nur wie man ihn dann verschiebt das weiß ich nicht. Gruß Mariaki |
Re: Buchstaben an andere Stelle setzten
Die einfachste Methode dürfte sein: Buchstabe merken, mit Delete löschen und mit Insert an neuer Stelle einfügen.
|
Re: Buchstaben an andere Stelle setzten
oder die beliebte Swap-Funktion :mrgreen:
Delphi-Quellcode:
var s: String; // s ist der String, z.B. 'Hallo'
i, i2: Integer; // i und i2 geben den Index der Zeichen an, // welche getauscht werden sollen var temp: Char; c := s[i]; s[i] := s[i2]; s[i2] := c; |
Re: Buchstaben an andere Stelle setzten
Es muss ja nicht unbedingt tauschen sein :mrgreen:
|
Re: Buchstaben an andere Stelle setzten
Ich würde das ganze über eine allgemeine Funktion lösen:
Delphi-Quellcode:
Grüße,
function Tausche(Wort : String; bs1, bs2 : integer) : String;
VAR TmpChar : Char; begin TmpChar := Wort[bs1]; Wort[bs1] := Wort[bs2]; Wort[bs2] := TmpChar; result := Wort; end; [...] Edit2.Text := Tausche(Edit1.Text, 2, 5); // Vertauscht z.B. Buchstabe 2 und 5 von Edit1.Text und weist es dem Text von Edit2 zu. SCRaT |
Re: Buchstaben an andere Stelle setzten
also ich wollte nicht tauschen und mit insert und delete habe ich noch nicht gearbeitet. könnte jemand ein kleines code Beispiel schreiben (Bin ein blutiger Anfänger).
|
Re: Buchstaben an andere Stelle setzten
F1 ist dein Freund
|
Re: Buchstaben an andere Stelle setzten
Ausnahmsweise:
Delphi-Quellcode:
procedure MoveChar(var s: string; Index1, Index2: Cardinal);
var c: Char; begin if (Index1 > Length(s)) or (Index2 > Length(s)) then Exit; c := s[Index1]; Delete(s,Index1,1); Insert(c,s,Index2); end; |
Re: Buchstaben an andere Stelle setzten
ach stümmt :oops:
OK, dann wenigstens DeddyH's Variante ohne Temp-Variable :angel:
Delphi-Quellcode:
procedure MoveChar(var S: string; Index1, Index2: Cardinal);
begin if (Index1 > Length(S)) or (Index2 > Length(S)) then Raise Exception.Create('Fehler'); If Index2 > Index1 Then Inc(Index2); Insert(S[Index1], S, Index2); Delete(S,Index1, 1); end; |
Re: Buchstaben an andere Stelle setzten
Der Vollständigkeit halber sollte wohl auch auf Index=0 geprüft werden.
|
Re: Buchstaben an andere Stelle setzten
Das funktioniert i-wie nicht.
Es kommt immer bei
Code:
und
Delete(S,Index1, 1);
Code:
der Fehler:
Insert(S[Index1], S, Index2);
Unit1.pas(39): E2197 Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden :wall: Außerdem: Ich habe nur Turbo Delphi und wenn man da in die Hilfe geht bekommt man Hilfe für C#, C++, Java und VB, aber nich für Delphi. Das Ist ein bisschen komisch aber es ist so. :pale: |
Re: Buchstaben an andere Stelle setzten
Versuch es mal mit System.Delete und System.Insert.
|
Re: Buchstaben an andere Stelle setzten
Nee funkt net :?:
|
Re: Buchstaben an andere Stelle setzten
F1 ist dein Freund.
|
Re: Buchstaben an andere Stelle setzten
Zeig mal den Aufruf der Prozedur.
|
Re: Buchstaben an andere Stelle setzten
Zitat:
|
Re: Buchstaben an andere Stelle setzten
Dann ist Google dein Freund. ;)
Wo ist denn der Lerneffekt, wenn du dir alles vorkauen lässt? |
Re: Buchstaben an andere Stelle setzten
Versuchst Du so etwas?
Delphi-Quellcode:
Das geht nicht, das müsstest Du dann so machen:
MoveChar(Edit1.Text,1,3);
Delphi-Quellcode:
var s: string;
begin s := Edit1.Text; MoveChar(s,1,3); Edit1.Text := s; |
Re: Buchstaben an andere Stelle setzten
Delphi-Quellcode:
Das ist der ganze Code. Das mit Stelle:=1 und Stelle2:=3 ist nur Beispielhaft.
Var
Text:string; Buchstabe:Char; Stelle1,Stelle2:Cardinal; procedure TForm1.Button1Click(Sender: TObject); begin Text:=Memo1.Lines.Text; Stelle1:=1; Stelle2:=3; if (Stelle1 > Length(Text)) or (Stelle2 > Length(Text)) then Raise Exception.Create('Fehler'); If Stelle2 > Stelle1 Then Inc(Stelle2); Buchstabe:=Text[Stelle1]; Delete(Text,Stelle1,1); Insert(Buchstabe,Text,Stelle2); Memo2.Lines.Add(Text); end; |
Re: Buchstaben an andere Stelle setzten
Benenn Text mal um in z.B. sText.
|
Re: Buchstaben an andere Stelle setzten
Jo.. Danke. Funktioniert!!!
|
DP-Maintenance
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Delphi-Frage |
Re: Buchstaben an andere Stelle setzten
das war gerade der falsche Tipp.
Warum sind die Variablen global definiert? Die gehören in die Prozedur rein. :warn:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Text:string; Buchstabe:Char; Stelle1,Stelle2:Cardinal; begin ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 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