Avatar billede jensaa Nybegynder
16. januar 2000 - 23:02 Der er 8 kommentarer og
1 løsning

text in i array

jeg skal sætte en tekst ind i et array i en funktion. teksten der skal sættes ind skal bestå af tilfældige tal tal.
selve det med at lave de tilfældige tal plus lave det hele om til en string er intet problem.
men når jeg forsøger at bruge en string variabel som input til funktionen kommer der fejl.
så den skal vel konverteres om.
kan nogen fortælle hvordan man gør det?
Avatar billede sjensen Nybegynder
16. januar 2000 - 23:08 #1
strenge konverteres til tal med

integertal := inttostr(string);
doubletal  := floattostr(string);

Hvis din funktion arbejder med tal og du sender en streng kan du gøre sådan:

funktion lav_til_Tal(s : string) : integer;
begin
  try
    result := inttostr(trim(s));
  except
    on exception do result := 0;
  end;
end;

sjensen
Avatar billede michaelras Nybegynder
17. januar 2000 - 08:50 #2
sjensen: du mener vel strtoint ik'?

I stedet for onvenstående findes funktionen strtointdef, hvor du har mulighed for at sætte defaultværdi hvis strengen ikke er af tal, ex:

IntTal := IntToStrDef(Streng, 123);

Hvis Streng er andet end tal returneres 123

Michael
Avatar billede sjensen Nybegynder
17. januar 2000 - 09:38 #3
Michaelras>Jo selvfølgeligt. Du har ret. Jeg var vist lidt træt på det tidspunkt, og glemte at se efter hvad det rent faktisk var jeg skrev

altså

integertal := strtoint(string);
doubletal  := strtofloat(string);

sjensen
Avatar billede jensaa Nybegynder
17. januar 2000 - 22:34 #4
nu var det jo ikke det jeg spurgte om!
jeg skulle have teksten ind i et array.
eks.
funktion(tekst:array [0..63] of Char;,skod:integer;);
så vil jeg sætte en string fra en string variabel ind i array'en. der kommer bare fejl når jeg gør det direkte.Så det skal vel konverteres om.
Avatar billede snorga Nybegynder
18. januar 2000 - 00:28 #5
Prøv lige at vise den kode der går galt. Så er det vist nemmer at se hvad der er galt.
Avatar billede jensaa Nybegynder
18. januar 2000 - 22:45 #6
her er den så :

public
procedure CreateParams(var Params: TCreateParams); override;

procedure TCow.CreateParams(var Params: TCreateParams);
var klasse:string;
    rand:integer;
begin
  inherited CreateParams(Params);
Randomize;
rand := random(9)+random(9)+random(9)+random(9)+random(9)+random(9);
klasse := inttostr(rand);
Params.WinClassName := klasse;
Fejlen kommer her.... Den kan ikke bruge klasse stringen.
Men hvis man skriver
Params.WinClassName := 'Test';
virker det fint.
Håber det har hjulpet jer til at forstå hvad der er galt
Avatar billede michaelras Nybegynder
19. januar 2000 - 00:49 #7
Prøv det her:

procedure TCow.CreateParams(var Params: TCreateParams);
var klasse:string;
    rand:integer;
    WinClassTemp:PChar;
begin
  inherited CreateParams(Params);
Randomize;
rand := random(9)+random(9)+random(9)+random(9)+random(9)+random(9);
klasse := inttostr(rand);
//-------- her imellem
WinClassTemp := @Params.WinClassName;
StrPCopy(WinClassTemp, klasse);
//--------
//osv

Michael

Avatar billede michaelras Nybegynder
19. januar 2000 - 00:59 #8
Ved nærmere eftertanke, så glem ovenstående og erstat hvor du i din egen kode vil skrive:

  Params.WinClassName := klasse;

med

  StrPCopy(Params.WinClassName, klasse);

Det burde virke....

Michael
Avatar billede jensaa Nybegynder
19. januar 2000 - 17:50 #9
testet det lige når jeg kommer hjem og så acceptere jeg hvis det virker
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