Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > XProfan

XProfan Alles rund um die Programmiersprache XProfan.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag Hamachi deinstallieren
Aufrufe: 58, Antworten: 5
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7670, Antworten: 187
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26970, Antworten: 4223
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50963, Antworten: 1397
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3361, Antworten: 128
Gehe zum ersten neuen Beitrag Pc lahmt plötzlich
Aufrufe: 186, Antworten: 6
Gehe zum ersten neuen Beitrag PC fährt nicht mehr hoch.
Aufrufe: 0, Antworten: 0
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 329, Antworten: 19
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 28, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 34, Antworten: 0
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01.04.2010, 11:09   #1 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard Funktion geht mit Array aus @MoveListToArr nicht richtig!

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... ). Aber wenn ich nun ein Array aus der Funktion @MoveListToArr damit bearbeite und wieder mit @MoveArrToList zurückschreibe (vorher ClearList), dann wird der 1. Eintrag der Liste nicht berücksichtigt !!! Da ist der 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
Array$[]: Das Array, das bearbeitet werden soll.
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
N%: 1: Groß/Kleinschreibung beachten, 0: ... nicht beachten.

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)
  Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 01.04.2010, 11:55   #2 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Bangkok
 
Registriert seit: 09.02.2009
Ort: Bangkok
Beiträge: 686
Standard

probiere mal

WhileLoop 0,SizeOf(Array$[]) - 1
__________________
Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai.
http://dieterzornow.gmxhome.de
Bangkok ist offline   Mit Zitat antworten
Alt 01.04.2010, 11:59   #3 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

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!)
  Mit Zitat antworten
Alt 01.04.2010, 12:09   #4 (Direktlink)
RGH
Forenmaskottchen
 
Benutzerbild von RGH
 
Registriert seit: 08.02.2009
Ort: Nußloch (bei Heidelberg)
Beiträge: 550
Standard

Zitat:
Zitat von Unregistriert Beitrag anzeigen
Kann es sein, dass @MoveListToArray auch Index 0 benutzt
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
RGH ist offline   Mit Zitat antworten
Alt 01.04.2010, 12:13   #5 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

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 !
  Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 01.04.2010, 12:34   #6 (Direktlink)
AHT
Super-Moderator
 
Registriert seit: 15.02.2009
Beiträge: 10.786
Standard

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
Das geht so nicht. Du fügst immer den selben Eintrag ein.
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
Desweiteren berechnest du die resultierende Arraygröße Nicht richtig -> LeereEinträge% falsch.
__________________
______________

Bitte Schnelltest durchführen: Neuer Virus, ahnungslose User seit Monaten infiziert!

Mfg

AHT

Geändert von AHT (01.04.2010 um 15:04 Uhr)
AHT ist offline   Mit Zitat antworten
Alt 01.04.2010, 14:57   #7 (Direktlink)
Unregistriert
Gast
 
Beiträge: n/a
Standard

Ja, das hab ich jetzt auch bemerkt.

Danke !
  Mit Zitat antworten
Alt 01.04.2010, 16:49   #8 (Direktlink)
Super-Moderator
 
Benutzerbild von Frabbing
 
Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
Standard

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.
Frabbing ist offline   Mit Zitat antworten
Antwort

  Paules-PC-Forum.de > Programmierung > XProfan

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ä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



Alle Zeitangaben in WEZ +2. Es ist jetzt 12:09 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2