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