Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Eingabe mischen (https://www.delphipraxis.net/122439-eingabe-mischen.html)

Klaus01 16. Okt 2008 09:34

Re: Eingabe mischen
 
Sollte in etwas so gehen:

Delphi-Quellcode:
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;
Grüße
Klaus

DeddyH 16. Okt 2008 09:35

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;

STS301 16. Okt 2008 09:56

Re: Eingabe mischen
 
es funktioniert beides unter Lazarus nicht

Klaus01 16. Okt 2008 09:58

Re: Eingabe mischen
 
Zitat:

Zitat von STS301
es funktioniert beides unter Lazarus nicht

Wo mosert denn der Lazarus?

Grüße
Klaus

STS301 16. Okt 2008 10:00

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.

DeddyH 16. Okt 2008 10:01

Re: Eingabe mischen
 
Bei Klaus' Code muss das ein Var-Parameter sein und meins ist eine Funktion.

STS301 16. Okt 2008 10:37

Re: Eingabe mischen
 
dann steicht er mir Shuffle(edit1.text) an und sagt
Error: Argument can't be assigned to

wenn ich
Delphi-Quellcode:
var
f: String;
begin
edit1.text:= f;
Shuffle(f);
end;
schreibe, dann löscht er den den Eintrag und macht nichts

DeddyH 16. Okt 2008 10:52

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;

STS301 16. Okt 2008 10:57

Re: Eingabe mischen
 
wird nur gelsöscht, aber nicht ausgegeben

Klaus01 16. Okt 2008 10:57

Re: Eingabe mischen
 
Hallo,

ich musste die shuffle Routine noch etwas anpassen:


Delphi-Quellcode:
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;
Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 2 von 4     12 34      

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