Avatar billede michael-schou Novice
27. januar 2006 - 12:01 Der er 5 kommentarer og
1 løsning

Skælne mellem Random String og egen indtastning - Hvordan?

Jeg har en Form hvorpå der er 1 Knap og 1 Edit Felt. Når jeg trykker på kanppen så får jeg en random string i mit edit felt.

(Functionen laver en random string ud af '1234ABCDE'
Eks. : E32ABD41C) (Se kode)

Mit Spørgsmål er så :
Hvordan kan jeg, på en ny form med et edit felt, tjekke om min random string, (E32ABD41C), kommer fra min Function 'GetRandomString' og ikke fra noget som jeg selv har indtastet, ved at sætte min random string 'E32ABD41C' ind i mit edit felt på form 2 og trykker på min knap der hedder tjek String? 

I sin helhed skal Form2 "bare" skælne mellem min egen indtastning og functionen 'GetRandomString'.

*******KODE-START******

Function GetRandomString : string;
{returnerer en tilfældig alfabetstreng}
Var
  Temp,Alfabet:string;
  J,I:integer;
Begin
  Randomize;
  Alfabet := '1234ABCDE';
  J := length(Alfabet);
  While (J > 0) do
  Begin
    I := random(J)+1;
    Temp := Temp + Alfabet[I];
    Delete(Alfabet,I,1);
    Dec(J);
  End;
  Result := Temp;
End;


procedure TForm1.Button1Click(Sender: TObject);
Var
Strn : String;
begin
Strn := GetRandomString;
Edit1.Text := Strn;
end;

*******KODE-SLUT******
Avatar billede snowball Novice
27. januar 2006 - 12:27 #1
En "quick and dirty" løsning kan vel være bare at lave en global boolean variabel som sættes til True når du kalder din GetRandomString funktion. Så kan du så på din Form2 tjekke om den variabel er True - hvis den er det, så er strengen i Edit1 lavet af din GetRandomString funktion.
Avatar billede tolderlund Nybegynder
27. januar 2006 - 12:28 #2
Det kan ikke lade sig gøre at skelne ved at kigge på strengen.
Hvad enten strengen kommer fra en function eller er tastet ind, så er strengen den samme, der er ingen forskel.
Man kunne teste om strengen indeholder tegn som din funktion ikke laver, men den holder ikke hvis man nøjes med at indtaste samme tegn som din funktion laver.
Det eneste du kan gøre at er sætte et flag i Edit-feltets OnChange event og hvis flaget er sat så er der blevet indtastet noget i feltet.
Avatar billede vallemanden Nybegynder
27. januar 2006 - 12:47 #3
onChange vil heller ikke virke, da funktionen også 'indtaster' i Edit1, hvorved at OnChange vil blive trigget
Avatar billede snowball Novice
27. januar 2006 - 12:54 #4
vallemanden: Så skal man jo bare selv sætte den variabel efter man har kaldt funktionen.

procedure TForm1.Button1Click(Sender: TObject);
Var
Strn : String;
begin
Strn := GetRandomString;
Edit1.Text := Strn;
GlobalVar := True; //her
end;
Avatar billede michael-schou Novice
29. januar 2006 - 13:58 #5
Det viker ok snowball :)
Men kan du ikke lave det som et svar så du kan få dine point? :)

Det virker til det jeg skal bruge det til.

Mange Tak for hjælpen alle 3 :)
Avatar billede snowball Novice
29. januar 2006 - 18:34 #6
OK :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester