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



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

Månedens bedste
Årets bedste
Sidste års bedste