Autor Beitrag
mimi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 22.04.03 21:46 
Hallo,

ich habe z.b. so einen array:
ausblenden Delphi-Quelltext
1:
test:array[0..9of Integer					

nun möchte ich gerne test[3] löschen, also den 3. eintrag möchte ich löschen, wie geht das ?

_________________
MFG
Michael Springwald, "kann kein englisch...."
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Di 22.04.03 21:49 
Du kannst den Eintrag nicht löschen, das Array ist ja statisch, also kannst Du keinen Eintrag wegnehmen. Du könntest höchstens dem Eintrag einen besonderen Wert zuweisen, z.B. -1 damit Du erkennst, welche Einträge gültig sind und welche nicht.

Ansonsten musst Du ein dynamisches Array verwenden, und dann in einer Schleife immer das nächste ab dem zu löschendem Eintrag um eines nach vorne kopieren und zuletzt noch die Länge um eins verkürzen.

Gruß
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 22.04.03 22:35 
also der array in meinem Spiel ist ein "dynamisches Array" ;)
ich dachte es gibt so einen befel, wie bei den stringlisten:delete(index) oder sowas....Ansonsten müsste ich das so machen wie du es gesagt hast...

_________________
MFG
Michael Springwald, "kann kein englisch...."
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 22.04.03 23:01 
mimi hat folgendes geschrieben:
ich dachte es gibt so einen befel, wie bei den stringlisten:delete(index) oder sowas....Ansonsten müsste ich das so machen wie du es gesagt hast...
Es gibt leider keinen solchen Befehl. Du musst es wohl oder übel so machen, wie es dir UGrohne empfohlen hat, sollte eigentlich auch kein Problem sein!

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 22.04.03 23:02 
ja, es wohl die beste und (leider) die einzigte lösung :twisted:

_________________
MFG
Michael Springwald, "kann kein englisch...."
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Mi 23.04.03 00:32 
Hallo,

bei einem dynamischen Array könntest du mit Pointern arbeiten. Wenn du dann z.B. den Eintrag mit dem Index 3 löschen möchtest, lässt du alle Pointer bis zum Index 3 einschließlich nachrutschen. Damit überschreibst du deinen alten Eintrag und kannst deinen Array um 1 per SetLength verringern.

Grüße
Florian :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
Lehrling
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 23.04.03 23:20 
Hallo,

benutze TList


mfg Lehrling
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Mi 23.04.03 23:24 
Hallo,

bei kleinen Arrays bietet sich TList nicht unbedingt an, da zusätzlich die Classes Unit eingebunden werden muss. Es reicht ein Array bei kleineren Zugriffen.

Grüße
Florian :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 24.04.03 10:45 
Hi!

Die Unit Classes ist eine grundlegende und wird bei Benutzung der VCL (zum Beispiel Unit Forms) immer eingebunden. Das Hinzufügen zur Uses-Klausel in weiteren Units bringt daher keine Nachteile.

Cu, :)
Udontknow
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Do 24.04.03 11:49 
Hallo,

da hast du wohl recht, nur hat mimi keineswegs davon gesprochen, dass er die VCL nutzt.

Grüße
Florian :roll:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Do 24.04.03 12:09 
Deshalb schrieb ich ja auch "bei Benutzung der VCL".

Nach der aktuellen Umfrage ist das aber doch sehr sicher... :wink:
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Do 24.04.03 12:13 
Ausnahmen bestätigen die Regel.

:lol:

_________________
Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
mimi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3458

Ubuntu, Win XP
Lazarus
BeitragVerfasst: Di 03.06.03 20:15 
könnte mir jemmand ein beispiel bauen, was mit pointer und meinem problem zu tuene hat ?

PS:
habe vergessen in den beitrag zu schauen:)
habe es perzufall über die suchfunktion gefunden :)

_________________
MFG
Michael Springwald, "kann kein englisch...."
Fred Ferkel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 87



BeitragVerfasst: Di 03.06.03 23:18 
wenn der array dynamischer natur ist un die reihenfolge keine rolle spielt kannste auch einfach
ausblenden Delphi-Quelltext
1:
2:
array[3]=array[high(array)]
setlength(array,length(array)-1);

machen

Moderiert von user profile iconTino: Delphi-Tags hinzugefügt.