/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Hurtig udfylding af string
Fra : Harald


Dato : 16-09-03 18:39

Jeg skal have en string udfyldt med et tegn så hurtig så mulig. f.eks.:

function FillStreng(Antal : integer) : string;
var
i : integer;
begin
result:='';
for i:=1 to Antal do
result:=result+'x';
end;

var
MinLabel : TLabel;

MinLabel.Caption:=FillStreng(200);

denne løsning er for langsom så hvad gør man så?

Mvh
HK



 
 
Uffe Kousgaard (16-09-2003)
Kommentar
Fra : Uffe Kousgaard


Dato : 16-09-03 18:46

"Harald" <news@kroning.dk> wrote in message
news:3f674ab6$0$32491$edfadb0f@dread16.news.tele.dk...
>
> denne løsning er for langsom så hvad gør man så?


function FillStreng(Antal : integer) : string;
var
i: integer;
begin
setlength(result,antal);
for i:= 1 to Antal do result[i]:= 'x';
end;



Harald (16-09-2003)
Kommentar
Fra : Harald


Dato : 16-09-03 21:27

"Uffe Kousgaard" <uffe@routeware.dk> skrev i en meddelelse
news:3f674c63$0$83039$edfadb0f@dtext01.news.tele.dk...
> "Harald" <news@kroning.dk> wrote in message
> news:3f674ab6$0$32491$edfadb0f@dread16.news.tele.dk...
> >
> > denne løsning er for langsom så hvad gør man så?
>
>
> function FillStreng(Antal : integer) : string;
> var
> i: integer;
> begin
> setlength(result,antal);
> for i:= 1 to Antal do result[i]:= 'x';
> end;

Ja den er hurtigere, tak for det.

/HK



Thor (16-09-2003)
Kommentar
Fra : Thor


Dato : 16-09-03 20:21

Og hvis det skal være helt vildt:

> function FillStreng(Antal : integer) : string;
> var
>
> begin
setlength(result, antal);
fillchar(result, sizeof(result), ord('X'));
> end;

/ Thomas Riedel

"Harald" <news@kroning.dk> wrote in message
news:3f674ab6$0$32491$edfadb0f@dread16.news.tele.dk...
> Jeg skal have en string udfyldt med et tegn så hurtig så mulig. f.eks.:
>
> function FillStreng(Antal : integer) : string;
> var
> i : integer;
> begin
> result:='';
> for i:=1 to Antal do
> result:=result+'x';
> end;
>
> var
> MinLabel : TLabel;
>
> MinLabel.Caption:=FillStreng(200);
>
> denne løsning er for langsom så hvad gør man så?
>
> Mvh
> HK
>
>



Harald (16-09-2003)
Kommentar
Fra : Harald


Dato : 16-09-03 21:29


"Thor" <thr@image.danmark> skrev i en meddelelse
news:bk7nb0$1bvh$1@news.cybercity.dk...
> Og hvis det skal være helt vildt:
>
> > function FillStreng(Antal : integer) : string;
> > var
> >
> > begin
> setlength(result, antal);
> fillchar(result, sizeof(result), ord('X'));
> > end;

Jeg får en Access violation hvis jeg prøver det.

/HK

<klip>



Ove Kjeldgaard (16-09-2003)
Kommentar
Fra : Ove Kjeldgaard


Dato : 16-09-03 22:32

"Harald" <news@kroning.dk> wrote:

>
>"Thor" <thr@image.danmark> skrev i en meddelelse
>news:bk7nb0$1bvh$1@news.cybercity.dk...
>> Og hvis det skal være helt vildt:
>>
>> > function FillStreng(Antal : integer) : string;
>> > var
>> >
>> > begin
>> setlength(result, antal);
>> fillchar(result, sizeof(result), ord('X'));
>> > end;
>
>Jeg får en Access violation hvis jeg prøver det.
>

Hvad så med:

function FillStreng(Antal : integer) : string;
begin
setlength(result, antal);
fillchar(result[1], sizeof(result)-1, ord('X'));
end;

--
Med venlig hilsen, Ove Kjeldgaard
Natur og Friluftsliv: <http://hiker.dk>

Harald (17-09-2003)
Kommentar
Fra : Harald


Dato : 17-09-03 00:33

"Ove Kjeldgaard" <ok@newmail.dk> skrev i en meddelelse
news:r40fmv0tn2s3d2d48pl2cvlak03dm42o7v@4ax.com...
> "Harald" <news@kroning.dk> wrote:
>
> >
> >"Thor" <thr@image.danmark> skrev i en meddelelse
> >news:bk7nb0$1bvh$1@news.cybercity.dk...
> >> Og hvis det skal være helt vildt:
> >>
> >> > function FillStreng(Antal : integer) : string;
> >> > var
> >> >
> >> > begin
> >> setlength(result, antal);
> >> fillchar(result, sizeof(result), ord('X'));
> >> > end;
> >
> >Jeg får en Access violation hvis jeg prøver det.
> >
>
> Hvad så med:
>
> function FillStreng(Antal : integer) : string;
> begin
> setlength(result, antal);
> fillchar(result[1], sizeof(result)-1, ord('X'));
> end;

Sizeof vil altid give 4 som er størrelsen på result der jo bare er en
pointer, length giver længden af strengen. Men jeg har jo parameteren Antal
så dette her virker:
fillchar(result[1], Antal, 'x');
og det er _betydelig_ hurtigere end en for-next lykke, så jeg takker for
ideen

/HK



Uffe Kousgaard (17-09-2003)
Kommentar
Fra : Uffe Kousgaard


Dato : 17-09-03 06:30

"Harald" <news@kroning.dk> wrote in message
news:3f679dbc$0$32541$edfadb0f@dread16.news.tele.dk...
> og det er _betydelig_ hurtigere end en for-next lykke, så jeg takker
for
> ideen

Ja, med sådan en løkke er lykken gjort


Torben Friis (19-09-2003)
Kommentar
Fra : Torben Friis


Dato : 19-09-03 12:55

> denne løsning er for langsom så hvad gør man så?

Brug StringOfChar funktionen. Beskrivelse nedenfor.

/torben


function StringOfChar(Ch: Char; Count: Integer): string;

Description

StringOfChar returns a string containing Count characters with the character
value given by Ch. For example,

S := StringOfChar('A', 10);

sets S to the string 'AAAAAAAAAA'.



Harald (19-09-2003)
Kommentar
Fra : Harald


Dato : 19-09-03 13:35

"Torben Friis" <tf@proinfo._dk_> skrev i en meddelelse
news:b8Cab.82762$Kb2.3570167@news010.worldonline.dk...
> > denne løsning er for langsom så hvad gør man så?
>
> Brug StringOfChar funktionen. Beskrivelse nedenfor.
>
> /torben
>
>
> function StringOfChar(Ch: Char; Count: Integer): string;
>
> Description
>
> StringOfChar returns a string containing Count characters with the
character
> value given by Ch. For example,
>
> S := StringOfChar('A', 10);
>
> sets S to the string 'AAAAAAAAAA'.

StringOfChar functionen er for langsom.

Mvh
HK



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste