![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Gast
Beiträge: n/a
|
Hallo!
Ich habe mir eine Funktion zum Löschen aller doppelten Einträge in einem dynamischen String-Array programmiert. Funktioniert auch (wenn auch sehr, sehr langsam... drin!!!Der Code der Aussortier-Funktion: Code:
Proc DeleteDoubleString
Parameters Array$[], Groß_Kleinschreibung%
Declare Num%, NichtLeereEinträge%, Temp$
WhileLoop @SizeOf(Array$[]) - 1
Num% = &loop
WhileLoop Num% + 1, @SizeOf(Array$[]) - 1, 1
IF Array$[Num%] = Array$[&loop]
Array$[&loop] = ""
ELSEIF (Upper$(Array$[Num%]) = Upper$(Array$[&loop])) AND (Groß_Kleinschreibung% = 0)
Array$[&loop] = ""
ENDIF
EndWhile
EndWhile
NichtLeereEinträge% = 0
WhileLoop @SizeOf(Array$[]) - 1
Case Array$[&loop] <> "": NichtLeereEinträge% = NichtLeereEinträge% + 1
EndWhile
WhileLoop 1, @SizeOf(Array$[]) - 1, 1
Num% = &loop
IF Array$[Num%] = ""
WhileLoop @SizeOf(Array$[]) - 1, Num% + 1, -1
IF Array$[&loop] <> ""
Array$[Num%] = Array$[&loop]
Break
ENDIF
EndWhile
ENDIF
EndWhile
SetSize Array$[], NichtLeereEinträge% + 1
Return Array$[]
EndProc
Groß_Kleischreibung%: 1: Groß/Kleinschreibung beachten, 0: ... nicht beachten. Jetzt der Code, der die Funktion aufruft: Code:
Proc DeleteDoubleList Parameters N% Declare Temp$[], Temp2$[] @MoveListToArr(Temp$[]) Temp2$[] = @DeleteDoubleString(Temp$[], N%) ClearList @MoveArrToList(Temp2$[]) EndProc Ich hoffe mal, ihr seid da nicht so ratlos wie ich (bin auch ganz neu bei XProfan Danke schon mal! (Ich verwende XProfan 11.2 Free auf Windows 7 Home Premium 32bit) |
|
|
|
|
#2 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
|
probiere mal
WhileLoop 0,SizeOf(Array$[]) - 1
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai. http://dieterzornow.gmxhome.de |
|
|
|
|
|
#3 (Direktlink) |
|
Gast
Beiträge: n/a
|
Die Funktion geht aber, wenn ich ein selbsterstelltes Array benutze.
Da wird dann der 1. Eintrag nicht ausgelassen. -Grübel- Kann es sein, dass @MoveListToArray auch Index 0 benutzt Aber es funktioniert bei einer anderen Funktion auch, ohne dass ich einen Eintrag 0 benutze (Liste sortieren...). Bitte mal erklären (Danke für die schnelle Antwort!) |
|
|
|
#4 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
|
Ja natürlich. Jedes Array beginnt mit dem Index 0.
Gruß Roland
__________________
Pentium D 2,8 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon HD5450 1024 MB / Windows 7(32) - XProfan X2.0c AMD Athlon II X2 2,9 GHz / 3 GB RAM / 500 GB HDD / ATI Radeon 3000 / Windows 7(64) - XProfan X2.0c http://www.xprofan.de |
|
|
|
|
|
#5 (Direktlink) |
|
Gast
Beiträge: n/a
|
Ach so.
Das ist mir noch nicht aufgefallen, weil ich bis jetzt immer mir selbsterstellten dynamischen Arrays gearbeitet habe, bei denen ich immer Eintrag 0 ausgelassen habe... Bin ja auch Anfänger. Danke |
|
|
|
|
#6 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 15.02.2009
Beiträge: 10.786
|
Du hast da noch zwei Fehler drin:
Code:
IF Array$[Num%] = ""
WhileLoop @SizeOf(Array$[]) - 1, Num% + 1, -1
IF Array$[&loop] <> ""
Array$[Num%] = Array$[&loop]
Break
ENDIF
EndWhile
ENDIF
Probiere das: Code:
Proc DeleteDoubleString
Parameters Array$[], Groß_Kleinschreibung%
Declare Num%, NichtLeereEinträge%, Temp$, Start&
WhileLoop 0,@SizeOf(Array$[]) - 2,1
Num% = &loop
WhileLoop Num% + 1, @SizeOf(Array$[]) - 1, 1
IF Array$[Num%] = Array$[&loop]
Array$[&loop] = ""
ELSEIF (Upper$(Array$[Num%]) = Upper$(Array$[&loop])) AND (Groß_Kleinschreibung% = 0)
Array$[&loop] = ""
ENDIF
EndWhile
EndWhile
NichtLeereEinträge% = 0
WhileLoop 0,@SizeOf(Array$[]) - 1
Case Array$[&loop] <> "": NichtLeereEinträge% = NichtLeereEinträge% + 1
Print Array$[&loop]
EndWhile
Start& = @SizeOf(Array$[]) -1
WhileLoop 0, @SizeOf(Array$[]) - 1
Num% = &loop
IF Array$[Num%] = ""
WhileLoop Start&, Num% + 1, -1
IF Array$[&loop] <> ""
Array$[Num%] = Array$[&loop]
Start& = &loop -1
Break
ENDIF
EndWhile
ENDIF
EndWhile
SetSize Array$[], NichtLeereEinträge%
Return Array$[]
EndProc
__________________
______________ Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert! Mfg AHT Geändert von AHT (01.04.2010 um 15:04 Uhr) |
|
|
|
|
|
#7 (Direktlink) |
|
Gast
Beiträge: n/a
|
Ja, das hab ich jetzt auch bemerkt.
Danke |
|
|
|
#8 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Ist für einen Anfänger manchmal verwirrend, dass Computer bei 0 anfangen zu zählen. Ging mir auch mal so. Das bekommst du schon noch rein.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| USB geht nicht mehr richtig | jonny | Windows XP | 1 | 20.04.2008 12:23 |
| grafikkarte geht nicht richtig! | MalleMatze | Hardware - Problemlösungen | 5 | 25.03.2007 17:39 |
| Pc geht nicht mehr so richtig. | Fabs888 | Windows XP | 3 | 17.09.2006 12:58 |
| count() funktion richtig eingesezt? | Green Ali3n | PHP/MySQL | 6 | 10.08.2006 21:55 |
| MEine STandby funktion geht nicht mehr | nilson | Allgemein | 2 | 16.01.2006 17:36 |