Eingabe mischen
hi
ich will in einem Editfeld zb: 'ABCDE' eingeben und dass zufällig zb. zu 'DBACE' machen. Wie soll ich da am besten anfangen? Mit zb.
Delphi-Quellcode:
var
//hier einen Char Array erstellen begin Char.max:= edit1.length; ...?? |
Re: Eingabe verdrehen
hmm du könntest mit random() einen zufälligen buchstaben auswählen. Ungefähr so:
Delphi-Quellcode:
dann musst du nur noch diesen buchstaben löschen (damit er nicht nochmal vorkommt)
augabe := ausgabe+string[random(Length(string))+1];
//edit: das ganze muss natürlich noch in eine schleife while Length(ausgabe) < Length(eingabe) do Viel Glück ;) |
Re: Eingabe verdrehen
AFAIK gibt es in StrUtils die Funktion ReverseString.
|
Re: Eingabe verdrehen
Zitat:
|
Re: Eingabe verdrehen
@gsh: genau, sry wenn ich mich nicht klar ausgedrückt habe
|
Re: Eingabe verdrehen
So früh am Morgen kann ich noch nicht richtig lesen :mrgreen:
|
Re: Eingabe verdrehen
Willst Du denn nun "mischen" oder "umdrehen"?
|
Re: Eingabe verdrehen
mischen, ich ändere den Titel gleich
|
Re: Eingabe mischen
Guten Morgen,
schau Dir doch mal die Routine am Ende dieses Beitrags an. .. und wenn Du magst, lese auch den ganzen Thread, liest sich sehr interessant. Grüße Klaus |
Re: Eingabe mischen
etwas verwirrend, nur wie mache ich das mit Buchstaben, ich würde mir einmal die Länge des Textes auslesen, und dann (irgendwie durchmischen) hänge ich..
|
Re: Eingabe mischen
Sollte in etwas so gehen:
Delphi-Quellcode:
Grüße
procedure Shuffle(var s: String);
var i, j: integer; temp : Char; begin for i := length(s)-1 downto 1 do begin j := Random(i); temp := s[i]; s[i] := s[j]; s[j] := temp; end; end; Klaus |
Re: Eingabe mischen
Nicht die eleganteste Methode, aber versuch es mal so:
Delphi-Quellcode:
function StrMerge(src: string): string;
var i,j: integer; begin SetLength(Result,Length(src)); j := 1; while Length(src) > 0 do begin i := Random(Length(src)) + 1; Result[j] := src[i]; Delete(src,i,1); inc(j); end; end; |
Re: Eingabe mischen
es funktioniert beides unter Lazarus nicht
|
Re: Eingabe mischen
Zitat:
Grüße Klaus |
Re: Eingabe mischen
gar nichts es macht einfach nichts
hier der Code
Delphi-Quellcode:
unit tausch;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); private function StrMerge(src: string):String; procedure Shuffle ( s:String); { private declarations } public { public declarations } end; var Form1: TForm1; implementation { TForm1 } procedure TForm1.Button1Click(Sender: TObject); begin Shuffle(Edit1.Text); //bei StrMerge(Edit1.text) funtkioniert es auch nicht end; function TForm1.StrMerge(src: string): string; var i,j: integer; begin SetLength(Result,Length(src)); j := 1; while Length(src) > 0 do begin i := Random(Length(src)) + 1; Result[j] := src[i]; Delete(src,i,1); inc(j); end; end; procedure TForm1.Shuffle( s:String); var i, j: integer; temp : Char; begin for i := length(s)-1 downto 1 do begin j := Random(i); temp := s[i]; s[i] := s[j]; s[j] := temp; end; end; initialization {$I tausch.lrs} end. |
Re: Eingabe mischen
Bei Klaus' Code muss das ein Var-Parameter sein und meins ist eine Funktion.
|
Re: Eingabe mischen
dann steicht er mir Shuffle(edit1.text) an und sagt
Error: Argument can't be assigned to wenn ich
Delphi-Quellcode:
schreibe, dann löscht er den den Eintrag und macht nichts
var
f: String; begin edit1.text:= f; Shuffle(f); end; |
Re: Eingabe mischen
Vielleicht solltest Du mal ein Grundlagentutorial lesen.
Delphi-Quellcode:
var
f: String; begin f := edit1.text; Shuffle(f); edit1.text:= f; end; |
Re: Eingabe mischen
wird nur gelsöscht, aber nicht ausgegeben
|
Re: Eingabe mischen
Hallo,
ich musste die shuffle Routine noch etwas anpassen:
Delphi-Quellcode:
Grüße
procedure Shuffle(var s: String);
var i, j: integer; temp : Char; begin for i := length(s) downto 1 do begin j := Random(i)+1; temp := s[i]; s[i] := s[j]; s[j] := temp; end; end; procedure TForm1.Button1Click(Sender: TObject); var s: String; begin s:= Edit1.Text; shuffle(s); Edit1.Text:=s; end; Klaus |
Re: Eingabe mischen
Danke! es funktioniert!!!!
|
Re: Eingabe mischen
hi nochmal, wenn die Eingabe leer ist, soll irgendein Text(Buchstaben(groß und klein), Zahlen, Sonderzeichen) erstellt werden. Wie mache ich das?
|
Re: Eingabe mischen
|
Re: Eingabe mischen
danke, werde ich mir morgen ansehen, ich habe ein Problem, wenn ich in das Eingabefeld ein Sonderzeichen (zb. $) eingebe, dann löscht er den eintrag und macht nichts.
|
AW: Re: Eingabe mischen
Zitat:
|
AW: Eingabe mischen
Wegen dem
Delphi-Quellcode:
var
Delphi-Quellcode:
procedure Shuffle(var s: String);
begin ... end; |
AW: Eingabe mischen
Zitat:
Delphi-Quellcode:
function Shuffle(s: String): String;
var i, j: integer; temp : Char; begin for i := length(s) downto 1 do begin j := Random(i)+1; temp := s[i]; s[i] := s[j]; s[j] := temp; end; Result := s; end; procedure TForm1.Button1Click(Sender: TObject); var s: String; begin s:= Edit1.Text; shuffle(s); Edit1.Text:=s; end; |
AW: Eingabe mischen
Zitat:
Delphi-Quellcode:
Grüße
//Falsch:
procedure TForm1.Button1Click(Sender: TObject); var s: String; begin s:= Edit1.Text; shuffle(s); // der Rückgabewert wird hier nirgends übergeben Edit1.Text:=s; end; //Richtig: procedure TForm1.Button1Click(Sender: TObject); var s: String; begin s:= Edit1.Text; s:= shuffle(s); Edit1.Text:= s; end; //Optimiert: procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:= shuffle(Edit1.Text); end; |
AW: Eingabe mischen
Thx :thumb:
|
AW: Eingabe mischen
Wenn kein
Delphi-Quellcode:
dann sollten die Parameter nicht beschrieben werden. Und bei einem
var
Delphi-Quellcode:
-Parameter dann ein
string
Delphi-Quellcode:
verwenden (Performance).
const
Delphi-Quellcode:
function Shuffle(const AStr : String ): String;
var i, j: integer; temp : Char; begin Result := AStr; for i := length(Result) downto 1 do begin j := Random(i)+1; temp := Result[i]; Result[i] := Result[j]; Result[j] := temp; end; end; |
AW: Eingabe mischen
Zitat:
|
AW: Eingabe mischen
Zitat:
Das hat etwas damit zu tun, ob du es erwarten würdest, wenn hier
Delphi-Quellcode:
der Wert von
function MyIntToStr( Value : Integer ) : string;
begin Result := IntToStr( Value ); Value := 0; end; var i : integer; s : string; begin i := 10; s := MyIntToStr( i ); end;
Delphi-Quellcode:
durch den Aufruf der Funktion verändert wird?
i
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr. |
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