Gå til innhold

Hvordan hente ett ord ifra f.eks. en txt fil inn i en label?


Anbefalte innlegg

Videoannonse
Annonse

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
  • 1 måned senere...

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 :p

Lenke til kommentar
  • 7 måneder senere...
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 av Databamse
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...