Autor Beitrag
tea pot
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Di 08.05.07 18:58 
Hallo!
Kann mir jemand sagen,wie ich es anstellen kann,dass ich über ein Editfeld einen String einlese(z.B. irgendein Wort)und dann die Buchstaben vertausche oder verschiebe?
Danke im Voraus!
MfG
Tea Pot
somebody
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167
Erhaltene Danke: 2



BeitragVerfasst: Di 08.05.07 19:02 
Also, nehmen wir mal an, das du aus edit3.text etwas in edit1.text habe willst, dann kannst du das auch ohne stringtoint machen, es geht natürlich auch mit, aber ich find das so einfacher.
ausblenden Delphi-Quelltext
1:
edit1.text := edit3.text;					
tea pot Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Di 08.05.07 19:08 
Ich dachte da in etwa an sowas:
Ich lese ein Wort ein und verschiebe oder vertausche dessen Buchstaben und gebe diesen Buchstabensalat in einem anderen Editfeld aus.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.05.07 19:08 
Dazu gibts Funktionen wie Suche in: Delphi-Forum, Delphi-Library POS Suche in: Delphi-Forum, Delphi-Library COPY und Suche in: Delphi-Forum, Delphi-Library DELETE.

Auf einen bestimmten Buchstaben deines Strings kannst du mit Stringvariable[2] zugreifen. (In diesem Fall der zweite Buchstabe).

Dieser Beispielcode würde den ersten mit dem letzten Buchstaben vertauschen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var s : string; 
begin
 s:=Edit1.text;
 showmessage(s[length(s)]+copy(s,2,(length(s)-2))+s[1]);
end;


Dabei ist zu beachten das Length(s) die länge des Strings S angibt.
Man nimmt also den letzten Buchstaben von S,
Kopiert mit Copy(s, 2, Length(s)-2) aus dem STring S, von der zweiten bis zur vorletzten Stelle die Buchstaben, und fügt dann noch den ersten Buchstaben mit s[1] an.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.05.07 19:15 
Ich les grad Buchstabensalat: Sollen die Buchstaben einfach irgendwie gemischt werden?

Dann schau dir mal die Funktion Suche in: Delphi-Forum, Delphi-Library RANDOM an.

Du solltest allgemein so vorgehen:

Wenn dein String 5-stellig ist, erstelle dir eine Liste, z.B. wie diese hier:

ausblenden Quelltext
1:
2:
3:
4:
5:
4
2
3
1
5


Das machst du mit Random und etwas nachdenken oder diesem Tutorial von user profile iconNarses www.delphi-library.d...71713&highlight=

Wenn du diese Liste hast gehst du sie von der ersten bis zur letzten Zeile mit einer For-Schleife durch. Ungefähr so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var alt : string;
    neu : string;
    SList : TStringList;
    i : integer;
begin
 a:=edit1.text;
 slist:=Tstringlist.Create;
 for i:=0 to slist.count-1 do
  neu:=neu+alt[strToInt(slist[i])];
 edit2.text:=neu;
end;


Wenn du dich an Narses' Tutorial wendest hast du anstelle einer StringList ein Array, welches dann dynamisch sein muss.
tea pot Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Di 08.05.07 19:15 
noch ne letzte blöde Frage:
Geht das auch mit Delphi 5?
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.05.07 19:16 
klar. Das geht wahrscheinlich sogar schon mit Delphi 1.
(Ich benutz übrigens auch nur Delphi 6)


99,9% der Quellcodes die du hier im Forum findest gehen mit Delphi 3 bis 2007...also keine Sorge ;)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 08.05.07 19:25 
Moin!

user profile iconKarlson hat folgendes geschrieben:
Wenn du dich an Narses' Tutorial wendest hast du anstelle einer StringList ein Array, welches dann dynamisch sein muss.

Nun, ein String ist ja quasi ein Array, deshalb braucht man nur minimale Anpassungen für einen String-Shuffle: ;)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
// perfektes Mischen eines Strings nach Fisher-Yates
function StrShuffleFisherYates(const aStr: String): String;
  var
    i,j: Integer;
    tmp: Char;
begin
  Result := aStr;
  // alle Elemente des Strings durchlaufen
  for i := 1 to Length(Result) do begin
    // neue, zufällig Position bestimmen
    j := i +Random(Length(Result) -i +1);
    // Element Nr. i mit Nr. j vertauschen (3ecks-Tausch)
    tmp := Result[j];
    Result[j] := Result[i];
    Result[i] := tmp;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := StrShuffleFisherYates(Edit1.Text);
end;

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.05.07 19:27 
:autsch: So ist das allerdings wesentlich besser :lol:
tea pot Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Di 08.05.07 19:37 
boah das sieht voll hardcore aus^^

@ Karlson wie sieht denn die Umkehrung zu deinem 1.Bespiel (ganz oben) aus?
Die erste Methode leuchtet mir fast ein,bin ja noch ein ordentlicher noob^^

MfG

tea pot
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Di 08.05.07 19:42 
Die Umkehrung meines erstens Beispiels, also dieses:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
var s : string; 
begin
 s:=Edit1.text;
 showmessage(s[length(s)]+copy(s,2,(length(s)-2))+s[1]);
end;


wäre doch einfach die Procedure nochmal aufzurufen! Dann hast wieder den ursprünglichen String. :)
tea pot Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Di 08.05.07 19:46 
Zonk klar is ja logisch!
Das lag ja echt nahe lol^^