23. februar 2006 - 15:19Der er
13 kommentarer og 1 løsning
Hvad gør følgende kode?
function FK : Boolean; var x: string; i: Integer; begin x:=Form1.Edit1.Text; Result:=False; for i:=1 to Length(y) do //y er en streng - et ord if (x[i]='?') and (y[i] in Temp) then //temp er en konstant begin
Absolut ingen ting - ud over at brænde CPU-tid af!
Hvis man kalder den, bliver den lokale variable Result sat til enten False eller True afhængigt af værdierne af Form1.Edit1.Text, y og Temp (hvor de sidste to er eksternt defineret). Når funktionen afsluttes så bliver den lokale variabel imidlertid prompte smidt væk igen.
Der er en lille mulighed for at funktionen faktisk giver en fejl i stedet - emlig hvis strengen y er længere end det som står i Form1.Edit1.Text.
Ok, det er vist ikke helt sand: Result er ikke lokal :^|
Den leder teksten i Form1.Edit1.Text igennem tegn for tegn. Hvis den finder et ?-tegn på en plads, kigger den på den tilsvarende plads i y. Hvis det tegn så ligger i settet Temp så sættes Result til True og finktionen afsluttes. Hvis dette ikke sker får man enten Result lig med False (eller en fejl).
Mange tak skal I have - der er noget mere jeg i tvivl om i en stump kode. Jeg afsætter gerne flere point.
function temp(): string; //hvorfor skal der stå string her? var i:integer; y:integer; begin for i:=1 to 10 do begin y:=random(12); form1.label1.caption := inttostr(y*200); application.processmessages; sleep(i*40); end; end;
Hvad er sleep for en indbygget funktion, og hvad gør den i denne sammenhæng, og hvorfor skal i gennemløbe 1..10?
Ahh ok - hvorfor er det nødvendigt, at der står string foran proceduren?
Altså vil det sige, at funktionen gennemløbes 10 gange (eller er det 9?), hvor der randomizes, og dette tal ganges med 200, og nedtrapningen sker via sleep, idet sleep afhænger af antallet af udførte procedure?
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.