![]() |
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 ![]() .. 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 22:01 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