/ 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
TStringList find værdi
Fra : Harald


Dato : 22-01-06 09:21

Hej

Hvis man har en TStringList med en række Navn=Value værdier og man vil finde
linien med en bestemt value findes der så ikke andre måder end at køre en
for-next gennem alle linier?

/HK



 
 
Finn Bindeballe (22-01-2006)
Kommentar
Fra : Finn Bindeballe


Dato : 22-01-06 10:59

hey...

fra D8 (mener jeg) kan saandan noget som det her.....


for I in IArray2 do
begin
// Do something with I...
end;


/finn

Harald (22-01-2006)
Kommentar
Fra : Harald


Dato : 22-01-06 11:17

"Finn Bindeballe" <ohno@galnet.dk> skrev i en meddelelse
news:43d35671$0$15782$14726298@news.sunsite.dk...
> hey...
>
> fra D8 (mener jeg) kan saandan noget som det her.....
>
>
> for I in IArray2 do
> begin
> // Do something with I...
> end;

Jeg buger Delphi 7 men kan du forklare det lidt nærmere

/HK



Harald (22-01-2006)
Kommentar
Fra : Harald


Dato : 22-01-06 11:45

"Harald" <nomail@noname.dk> skrev i en meddelelse
news:43d35b9b$0$84020$edfadb0f@dtext01.news.tele.dk...
> "Finn Bindeballe" <ohno@galnet.dk> skrev i en meddelelse
> news:43d35671$0$15782$14726298@news.sunsite.dk...
>> hey...
>>
>> fra D8 (mener jeg) kan saandan noget som det her.....
>>
>>
>> for I in IArray2 do
>> begin
>> // Do something with I...
>> end;
>
> Jeg buger Delphi 7 men kan du forklare det lidt nærmere

Glem det det er gået op for mig hvad det er det minder lidt om foreach i
php, men det er jo egentlig det samme som en for-next og det var jo det jeg
gerne ville undgå.

/HK



Uffe Kousgaard (22-01-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 22-01-06 13:20

IndexOf() eller noget i den stil.

"Harald" <nomail@noname.dk> wrote in message
news:43d34077$0$84019$edfadb0f@dtext01.news.tele.dk...
> Hej
>
> Hvis man har en TStringList med en række Navn=Value værdier og man vil
finde
> linien med en bestemt value findes der så ikke andre måder end at køre en
> for-next gennem alle linier?
>
> /HK
>
>



Harald (22-01-2006)
Kommentar
Fra : Harald


Dato : 22-01-06 14:30

"Uffe Kousgaard" <oh@no.no> skrev i en meddelelse
news:43d37855$0$38651$edfadb0f@dread12.news.tele.dk...
> IndexOf() eller noget i den stil.

Nej

/HK


> "Harald" <nomail@noname.dk> wrote in message
> news:43d34077$0$84019$edfadb0f@dtext01.news.tele.dk...
>> Hej
>>
>> Hvis man har en TStringList med en række Navn=Value værdier og man vil
> finde
>> linien med en bestemt value findes der så ikke andre måder end at køre en
>> for-next gennem alle linier?
>>
>> /HK
>>
>>
>
>



Michael Haase (22-01-2006)
Kommentar
Fra : Michael Haase


Dato : 22-01-06 15:12

Harald skrev dette den 22-01-2006 09:21:
> Hej
>
> Hvis man har en TStringList med en række Navn=Value værdier og man vil finde
> linien med en bestemt value findes der så ikke andre måder end at køre en
> for-next gennem alle linier?
>
Der er både repeat..until og while..do, som begge stopper når din
betingelse er opfyldt, og derfor ikke nødvendigvis kører alle linjer
igennem.

--
Michael Haase

Harald (22-01-2006)
Kommentar
Fra : Harald


Dato : 22-01-06 15:19

"Michael Haase" <micvans@netscape.invalid> skrev i en meddelelse
news:9b43b$43d392c7$3e3d8433$777@news.arrownet.dk...
> Harald skrev dette den 22-01-2006 09:21:
>> Hej
>>
>> Hvis man har en TStringList med en række Navn=Value værdier og man vil
>> finde linien med en bestemt value findes der så ikke andre måder end at
>> køre en for-next gennem alle linier?
>>
> Der er både repeat..until og while..do, som begge stopper når din
> betingelse er opfyldt, og derfor ikke nødvendigvis kører alle linjer
> igennem.

Det behøver en for-next jo heller ikke at gøre men jeg har kikket lidt på
Values propertyen og kan se at den faktisk også bare kører en for-next
indtil den finder det man søger. Det jeg gerne ville have var en hurtigere
løsning end en for-next men når Borland selv har brugt en for-next så findes
der nok ikke noget hurtigere, med mindre man skaltil at rode med assembler.

/HK



Yngve Damgaard (22-01-2006)
Kommentar
Fra : Yngve Damgaard


Dato : 22-01-06 17:22



"Harald" <nomail@noname.dk> skrev i en meddelelse
news:43d34077$0$84019$edfadb0f@dtext01.news.tele.dk...
> Hej
>
> Hvis man har en TStringList med en række Navn=Value værdier og man vil
finde
> linien med en bestemt value findes der så ikke andre måder end at køre en
> for-next gennem alle linier?
>
> /HK
>

Hej
Du kan f.eks bruge Pos til søgning på "Navn=" i listens text property.
Jeg har altid oplevet det som meget hurtigt.
--
Yngve



Harald (22-01-2006)
Kommentar
Fra : Harald


Dato : 22-01-06 17:38

"Yngve Damgaard" <ydamgaar@hotmail.com> skrev i en meddelelse
news:43d3b142$0$84020$edfadb0f@dtext01.news.tele.dk...
>
>
> "Harald" <nomail@noname.dk> skrev i en meddelelse
> news:43d34077$0$84019$edfadb0f@dtext01.news.tele.dk...
>> Hej
>>
>> Hvis man har en TStringList med en række Navn=Value værdier og man vil
> finde
>> linien med en bestemt value findes der så ikke andre måder end at køre en
>> for-next gennem alle linier?
>>
>> /HK
>>
>
> Hej
> Du kan f.eks bruge Pos til søgning på "Navn=" i listens text property.
> Jeg har altid oplevet det som meget hurtigt.

jo, men så får jeg jo ikke et index

/HK



Uffe Kousgaard (22-01-2006)
Kommentar
Fra : Uffe Kousgaard


Dato : 22-01-06 23:44

Har du strings á la "xpos=70" og så ønsker du at finde hvilket index, der
indeholder 70?

Eller er det strings med tilknyttede objekt-referencer, hvor det er
referencen du vil finde? I så fald er der IndexOfObject som kan finde det.

Ellers må du forklare nærmere, hvilken datastruktur du anvender.

hilsen
Uffe


"Harald" <nomail@noname.dk> wrote in message
news:43d34077$0$84019$edfadb0f@dtext01.news.tele.dk...
> Hej
>
> Hvis man har en TStringList med en række Navn=Value værdier og man vil
> finde linien med en bestemt value findes der så ikke andre måder end at
> køre en for-next gennem alle linier?
>
> /HK
>
>



x@x.x (23-01-2006)
Kommentar
Fra : x@x.x


Dato : 23-01-06 07:32

Du skal bruge følgende kode for at sætte en værdi:

StringList.Values['Værdi1'] := 'Hej';


Og, følgende kode for at aflæse den igen:

Value1 := StringList.Values['Værdi1'];

/Brian



x@x.x (23-01-2006)
Kommentar
Fra : x@x.x


Dato : 23-01-06 07:40

Hov, tror jeg misforstod hvad du mente (o;

Prøv eventuelt følgende kode. Jeg har ikke testet det i Delphi, så jeg håber
det viker...:

/Brian

function IndexOfValue(AStrings: TStrings; Value: string): Integer;
var
I: Integer;
S: string;
begin
for I := 0 to AStrings.Count - 1 do
begin
S := Copy(AStrings.Strings[I], Length(AStrings.Names[I]) + 2, MaxInt);
if AnsiCompareText(S, Value) = 0 then
begin
Result := I;
Exit;
end;
end;
Result := -1;
end;




Harald (27-01-2006)
Kommentar
Fra : Harald


Dato : 27-01-06 20:58

<x@x.x> skrev i en meddelelse
news:JQ_Af.5265$Cl2.130538@news000.worldonline.dk...
> Hov, tror jeg misforstod hvad du mente (o;
>
> Prøv eventuelt følgende kode. Jeg har ikke testet det i Delphi, så jeg
> håber det viker...:
>
> /Brian
>
> function IndexOfValue(AStrings: TStrings; Value: string): Integer;
> var
> I: Integer;
> S: string;
> begin
> for I := 0 to AStrings.Count - 1 do
> begin
> S := Copy(AStrings.Strings[I], Length(AStrings.Names[I]) + 2, MaxInt);
> if AnsiCompareText(S, Value) = 0 then
> begin
> Result := I;
> Exit;
> end;
> end;
> Result := -1;
> end;

Har prøvet og den virker fint men jeg fik dog selv lavet en baseret på
borlands IndexOfName funktion, om den er bedre eller dårligere end din skal
jeg ikke kunne sige, jeg har testet hastigheden på dem begge og der var
faktisk ingen forskel.

function IndexOfValue(Strings : TStrings; const Value: string): Integer;
var
P: Integer;
S: string;
begin
for Result := 0 to Strings.Count-1 do
begin
S:=Strings[Result];
P:=AnsiPos(Strings.NameValueSeparator, S);
if (P<>0) and (AnsiCompareText(Copy(S, P+1,MaxInt), Value)=0) then
Exit;
end;
Result:=-1;
end;

/HK



Brian Andersen \(www~ (28-01-2006)
Kommentar
Fra : Brian Andersen \(www~


Dato : 28-01-06 17:20

Jeg tror for at måle hvilken af funktionerne der er hurtigst til at finde en
værdi, så skal man gentage funktionen et par milioner gange. Dette er reelt
uden betydning, da det hele foregår i hukommelsen.


/Brian



Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408162
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste