Popsux Skrevet 10. november 2008 Del Skrevet 10. november 2008 Jeg lurer på hvordan man hente ett tilfeldig (Random) ord ifra f.eks. en txt fil inn i en label ved et knappetrykk (button1)? Altså. Jeg vil at et tilfeldig ord (eller en setning) skal vises i en label (f.eks. label1). Takk på forhånd! Lenke til kommentar
tasle Skrevet 11. november 2008 Del Skrevet 11. november 2008 Du kan prøve noe sånt som dette: Var Ordliste : TStringlist; begin Randomize; Ordliste:= Tstringlist.Create; Ordliste.Loadfromfile ('MineOrd.txt'); Label1.Caption:= Ordliste [Trunc (Random (Ordliste.Count))]; Ordliste.Free; end; Hvis dette skal skje flere ganger i samme program, vil det nok være greiest å lage en funksjon av kodesnutten. Lenke til kommentar
Popsux Skrevet 16. november 2008 Forfatter Del Skrevet 16. november 2008 Takker tasle! Your the man!! Lenke til kommentar
ThePascal Skrevet 6. januar 2009 Del Skrevet 6. januar 2009 men hvorfor bruker du trunc?? det hjelper ingenting her. trunc er å runde ned hvis det er desimaltall. Det vil aldri bli desimaltall hvis man tar Random(X: DWORD), men hvis du skriver Random; så gir den tilbake et tall mellom 0- og 1. Trunc(3.24) = 3 Trunc(4) = 4 Trunc(5.8) = 5 Fjerner desimalltallene og husk at på tstringlist så må man ikke bruke random opp til count, men en mindere. SåNN JA det var detalijert Lenke til kommentar
tasle Skrevet 9. januar 2009 Del Skrevet 9. januar 2009 Beklager, jeg husket feil hvilken datatype Random (x) gir. Random med argument gir et heltall og ikke et desimaltall. Trunc er derfor ikke nødvendig i dette tilfellet. Lenke til kommentar
pumba50 Skrevet 23. august 2009 Del Skrevet 23. august 2009 (endret) Du kan prøve noe sånt som dette: Var Ordliste : TStringlist; begin Randomize; Ordliste:= Tstringlist.Create; Ordliste.Loadfromfile ('MineOrd.txt'); Label1.Caption:= Ordliste [Trunc (Random (Ordliste.Count))]; Ordliste.Free; end; Hvis dette skal skje flere ganger i samme program, vil det nok være greiest å lage en funksjon av kodesnutten. Hvis du ønsker å laste navnene på labels fra filer på disk, anbefaler jeg å bruke ini filer til det, der kan du lagre navnene på de forskjellige komponentene. Men når det er sagt, så har jeg lyst til å korrigere det eksemplet jeg kvoterer. Det bør skrives slik: HUSK Å LAGE EN OrdListe av typen TStringList under implementation i programmet så kjører du denne rutinen under oppstart av programmet. Procedure LoadOrdList; begin OrdListe := TStringList.Create; try OrdListe.LoadFromFile('filen.txt'); except on E:Exception do begin OrdListe.Free; MessageDlg('En feil oppstod under lasting av fil.',mtError,[mbAbort],0); end; end; end; Så kan du lage en slik rutine for å laste inn ord fra ordlista basert på posisjonen i ordlista (første ord har indeks 0, endre ordnummer fra byte til word hvis du har flere enn 256 ord) Function HentOrd(const ordnummer: byte) : string; begin Result := ''; Assert(Assigned(OrdListe),'Ordlisten er ikke initialisert.'); if OrdListe.Count > ordnummer then Result := OrdListe.Strings[ordnummer]; end; Endret 23. august 2009 av Databamse Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå