Array füllen/vergleichen

  • VBScript

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von daudi.

    Array füllen/vergleichen

    Hallo zusammen,

    Ich arbeite mit VBscript in einem ECAD (E3.Series) Programm.

    Da erstelle ich zwei Arrays. Eines hat den Namen von einem Bauteil plus die X-Werte,Y-Werte (also wo das Bauteil liegt)
    Im zweiten Array wird der Eingang plus seine X-Werte,Y-Werte gespeichert.

    Mein Problem ist nun es gibt Bauteile und Eingänge die haben den gleichen X-Wert und nun will ich die Bauteile und Eingänge mit den gleichen X-werten zusammen in einem Array speichern. Am Ende soll das Array so aussehen.

    In dem Array steht der Bauteilname, der Eingang mit dem gleichen x-Wert und dann der X- und Y-Wert vom Bauteil.


    Hat mir einer einen Vorschlag wie man sowas realisieren kann?


    Vielen Dank

    David
    Hallo,

    ja ich will zwei Arrays füllen und zwar Arr1(Bauteil1,x1,y1) Arr2(Bauteil2,x2,y2).

    Dies soll eingelesen werden mit einer For-Schleife und dann in den Arrays gespeichert werden.

    Jedes Bauteil aus Arr1 hat ein Bauteil in Arr2 das den gleichen X-wert hat.
    Nun will ich die vergleichen damit ich die mit dem gleichen x-wert finde und ein neues Array erstellen das wie folgt aussehen soll Arr3(Bauteil1,Bauteil2,x2,y2)
    Damit ich dann später auf die Bauteile zugreifen kann.
    Okay, dann wirst du wohl durch eines der beiden Arrays schleifen müssen und einfach mit dem Index auf beide Arrays zugreifen und den X wert vergleichen.
    Wenn beide gleich sind kannst du diese in eine Liste einfügen aus der du dann ein Array erzeugen kannst wenn du es brauchst.
    lg.

    LucaWelker
    Da wenige von uns das CAD-Programm haben, wirst Du es probieren müssen. Evtl. gibt es auch ein spezielles Forum für das CAD-Programm. Ein dreidimensionales Array würde ich da nicht vermuten, eher einen benutzerdefinierten Typ, wenn sowas unterstützt wird.

    Ansonsten halt alle einzeln durchegehen. Erst X mit X vergleichen und wenn das gleich ist, dann noch Y mit Y vergleichen. Spart etwas Zeit.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Eine Variable bekommt einen Wert zugewiesen.

    Variable = Wert

    Ein Array besteht prinzipiell aus mehreren gleichen Variablen. Bzw. die Variable bekommt noch einen Index. Z.B. von 0 bis 9

    Variable(Index) = Wert

    Macht 10 verschiedene Werte

    Ein zweidimensionales Array besteht aus zwei Indexen.

    Variable (Index1, Index2) = Wert

    Mach Hundert verschiedene Werte bei beiden Indexen je von 0 bis 9

    Ein Dreidimensionales Array demnach aus drei Indexen

    Variable (Index1, Index2, Index3) = Wert

    Ergibt 1000 verschiedene Werte bei Indexen je von 0 bis 9.

    Du möchtest aber jeweils den zweiten und dritten Index der Bauteile mit den zweiten und dritten Indexen der Eingänge vergleichen. Gibt es jetzt X Werte von 1000, müsstest Du jede Variable so hoch dimensionieren. Bei Y dann nochmal das gleiche. Alle nicht genutzten X-undY-Indexe wären reine Speicherverschwendung und bremsen das Programm darüber hinaus total aus. Spätestens bei negativen X/Y Werten kommt ein weiteres Problem.

    Unterstützt die Scriptsprache benutzerdefinierte Typen, dann sind die das Mittel der Wahl.

    type tKoordi
    x as integer
    y as integer
    end type

    dim Bauteil() as tKoordi
    dim Eingang() as tKoodi

    Da könnte man dann die Arrays durchgehen und jeweils X mit X und Y mit Y vergleichen.
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hallo,

    danke erstmal für die Erklärung.

    Also mein Array sollte so aussehen.

    Erste Spalte soll der Name stehen dann in der 2 und 3 Spalte der x und y Wert.
    Es wird zum Glück keine negativen Werte geben.

    Wenn ich jetzt 3 Variablen habe wie Bauteilname, strX, strY die sich ändern und ich jeweils den neuen Inhalt in ein Array speichern will wie gehe ich da am besten vor?
    Mach ich das mit einer For-Schleife? Kann mir eventuell jemand mal ein kleines Beispiel zeigen? Bis jetzt hab ich immer nur etwas gefunden in dem man das Array "manuell" füllt aber nicht automatisch.


    Vielen Dank

    David
    Du willst also ne Auflistung von Tripeln ? (Drei zusammenhängede Werte).
    Dann würde ich (zumindest in VBS) drei Arrays nehmen, einmal Name, dann X dann Y. Die sind alle eindimensional und haben dieselbe Länge.
    Nun beim befüllen fügst du am gleichen Index die Werte hinzu, bzw nimmst sie wenn du sie brauchst.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    ja also ich muss ja am Ende 2 Arrays vergleichen.

    Meine Idee war schon ein Dreidimensionales bei dem ich dann den Name, X und Y Wert in der gleichen Reihe habe.

    Im Zweiten Array soll es auch wieder so sein mit Name X und Y und dann muss ich die zwei Arrays auf die gleichen X Werte vergleichen.

    Daher muss ich das in einem dreidimensionalen Array machen

    Aber wie funktioniert das bei VBScript in Verbindung mit einer For schleife?
    So ich habe es nun geschafft. Ich habe einfach die X-Werte verglichen bevor ich das Array erstelle und dann nur noch die benötigten Werte in das Array geschrieben.



                        If  strSymXI = strSymX Then      

                                                                
                            AusgArr(x,0) = att
                                                    
                            AusgArr(x,1) = strSymXI
                                                
                            AusgArr(x,2) = strSymYI
                            
                                            
                        x = x +1 
                    
            
                    End If 

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „daudi“ ()