|
| Arbejde med dynamiske Arrays Fra : Allan Madsen |
Dato : 08-11-06 16:55 |
|
Hejsa Nyt problem faktisk 2 problemer ss.
Jeg har en dynamisk array.
Er det muligt at slette et, element i denne array.
F.eks noget ala.
SletArrayPladsNr(arrayTShapes,4)
Sådan at arrayTShapes[4] Nu er slette og alle der måtte ligge efter er
rykket en plads op.???
Eks. på data
1
2
3
4
5
6
Nu sletter jeg nr 4 og listen ser nu sådan her ud.
1
2
3
5
6
Hvordan kan jeg aflæse hvormange elementer der er i en array??
MVH
Allan
| |
Harald (08-11-2006)
| Kommentar Fra : Harald |
Dato : 08-11-06 20:16 |
|
"Allan Madsen" <ns@crump.dk> skrev i en meddelelse
news:4551fdfe$0$14036$edfadb0f@dread15.news.tele.dk...
> Hejsa Nyt problem faktisk 2 problemer ss.
>
> Jeg har en dynamisk array.
>
> Er det muligt at slette et, element i denne array.
>
> F.eks noget ala.
> SletArrayPladsNr(arrayTShapes,4)
> Sådan at arrayTShapes[4] Nu er slette og alle der måtte ligge efter er
> rykket en plads op.???
> Eks. på data
Jeg mener ikke der findes en færdig funktion til at slette et element i et
array men ved at bruge Move kan du flytte alle elementer over den du vil
slette en ned og derefter sætte størrelsen på arrayet en ned. En anden
mulighed var måske at benytte TList, TObjectList eller lign. da disse
klasser har indbygget funktioner til at slette.
/HK
| |
nic@aub.dk (09-11-2006)
| Kommentar Fra : nic@aub.dk |
Dato : 09-11-06 08:23 |
|
Du kan ikke sltte et element i et dynamisk array og flytte resten op
automatisk - du skal istedet bruge en TList/TObjectList hvis du ønsker
dette.
length(array) giver antallet af elementer i array'et (inkl evt nil
elementer).
Allan Madsen wrote:
> Hejsa Nyt problem faktisk 2 problemer ss.
>
> Jeg har en dynamisk array.
>
> Er det muligt at slette et, element i denne array.
>
> F.eks noget ala.
> SletArrayPladsNr(arrayTShapes,4)
> Sådan at arrayTShapes[4] Nu er slette og alle der måtte ligge efter er
> rykket en plads op.???
> Eks. på data
> 1
> 2
> 3
> 4
> 5
> 6
>
> Nu sletter jeg nr 4 og listen ser nu sådan her ud.
> 1
> 2
> 3
> 5
> 6
>
> Hvordan kan jeg aflæse hvormange elementer der er i en array??
>
>
> MVH
> Allan
| |
Flozzy (10-11-2006)
| Kommentar Fra : Flozzy |
Dato : 10-11-06 04:17 |
|
"Allan Madsen" <ns@crump.dk> skrev i en meddelelse
news:4551fdfe$0$14036$edfadb0f@dread15.news.tele.dk...
> Hejsa Nyt problem faktisk 2 problemer ss.
>
> Jeg har en dynamisk array.
>
> Er det muligt at slette et, element i denne array.
>
Hej Allan
Fandt dette på delphi.about.com - tror du kan bruge det.
Mvh. Flozzy
If you have a dynamic array of strings and want to delete one string from
it, you can use the DeleteArrayItem procedure. Here's a sample usage
var
myArray: TStringArray;
....//delete fifth element
DeleteArrayItem(myArray, 5) ;
~~~~~~~~~~~~~~~~~~~~~~~~~
type
TStringArray = array of string;
procedure DeleteArrayItem(var X: TStringArray; const Index: Integer) ;
begin
if Index > High(X) then Exit;
if Index < Low(X) then Exit;
if Index = High(X) then
begin
SetLength(X, Length(X) - 1) ;
Exit;
end;
Finalize(X[Index]) ;
System.Move(X[Index +1], X[Index],(Length(X) - Index -1) * SizeOf(string)
+ 1) ;
SetLength(X, Length(X) - 1) ;
end;
| |
Allan Madsen (14-11-2006)
| Kommentar Fra : Allan Madsen |
Dato : 14-11-06 16:25 |
|
Ok det skal da prøves ss tak
"Flozzy" <jje@venlig.dk> skrev i en meddelelse
news:4553ef4e$0$880$edfadb0f@dread12.news.tele.dk...
>
> "Allan Madsen" <ns@crump.dk> skrev i en meddelelse
> news:4551fdfe$0$14036$edfadb0f@dread15.news.tele.dk...
>> Hejsa Nyt problem faktisk 2 problemer ss.
>>
>> Jeg har en dynamisk array.
>>
>> Er det muligt at slette et, element i denne array.
>>
>
> Hej Allan
>
> Fandt dette på delphi.about.com - tror du kan bruge det.
> Mvh. Flozzy
>
> If you have a dynamic array of strings and want to delete one string from
> it, you can use the DeleteArrayItem procedure. Here's a sample usage
> var
> myArray: TStringArray;
> ...//delete fifth element
> DeleteArrayItem(myArray, 5) ;
> ~~~~~~~~~~~~~~~~~~~~~~~~~
> type
> TStringArray = array of string;
>
> procedure DeleteArrayItem(var X: TStringArray; const Index: Integer) ;
> begin
> if Index > High(X) then Exit;
> if Index < Low(X) then Exit;
> if Index = High(X) then
> begin
> SetLength(X, Length(X) - 1) ;
> Exit;
> end;
> Finalize(X[Index]) ;
> System.Move(X[Index +1], X[Index],(Length(X) - Index -1) *
> SizeOf(string) + 1) ;
> SetLength(X, Length(X) - 1) ;
> end;
>
>
| |
|
|