| Autor |
Beitrag |
mimi
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 22.04.03 21:46
Hallo,
ich habe z.b. so einen array:
Delphi-Quelltext 1:
| test:array[0..9] of 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
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 1349
Erhaltene Danke: 1
Win XP
D5 Pers (SSL), D2005 Pro, C, C#
|
Verfasst: 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 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: Di 22.04.03 23:02
ja, es wohl die beste und (leider) die einzigte lösung 
_________________ MFG
Michael Springwald, "kann kein englisch...."
|
|
FloSch
      
Beiträge: 129
|
Verfasst: 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 
_________________ Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
|
|
Lehrling
Hält's aus hier
Beiträge: 7
|
Verfasst: Mi 23.04.03 23:20
Hallo,
benutze TList
mfg Lehrling
|
|
FloSch
      
Beiträge: 129
|
Verfasst: 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 
_________________ Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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
      
Beiträge: 129
|
Verfasst: 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 
_________________ Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: 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... 
|
|
FloSch
      
Beiträge: 129
|
Verfasst: Do 24.04.03 12:13
Ausnahmen bestätigen die Regel.

_________________ Windows 200 Prof. - Debian Sarge
D5 Prof & D6 PE - Kylix 3 Professional - Free Pascal
|
|
mimi 
      
Beiträge: 3458
Ubuntu, Win XP
Lazarus
|
Verfasst: 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
      
Beiträge: 87
|
Verfasst: Di 03.06.03 23:18
wenn der array dynamischer natur ist un die reihenfolge keine rolle spielt kannste auch einfach
Delphi-Quelltext 1: 2:
| array[3]=array[high(array)] setlength(array,length(array)-1); |
machen
Moderiert von Tino: Delphi-Tags hinzugefügt.
|
|