Hot News:

Unser Angebot:

  Foren auf CAD.de
  VBasic / vb.net / vbs / wsh
  VB6: Zeile für Zeile in Array

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
Autor Thema:  VB6: Zeile für Zeile in Array (585 mal gelesen)
G. Dawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 27. Jun. 2008 13:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Tach, zusammen!

Ich habe VBA-Array gar nicht gerne, die sind mir zu kompliziert (verglichen mit PHP).
Kann mir bitte jemand mit meinem, vermutlich kleinem Problem weiterhelfen?

Code:
For i = 0 To (pointCount - 1)
   
xValue = 23
yValue = 44
zValue = 33

If xValue = Empty Then xValue = "0"
If yValue = Empty Then yValue = "0"
If zValue = Empty Then zValue = "0"

' <Do something useful with the data> Hopefully! :D
strOneLine = xValue & Chr(9) & yValue & Chr(9) & zValue

' Print #intOutHandle, strOneLine

If i > 0 Then ReDim XYZArray(0 To i)
If i > 0 Then ReDim Preserve XYZArray(0 To i)
' XYZArray(q) = Array(xValue, yValue, zValue)
XYZArray(i) = strOneLine

Debug.Print LBound(XYZArray)
' Debug.Print XYZArray(i)

Next i


Wie kriege ich meine Koordinaten in einen Array gestapelt? Welchen Typ muss ich den in meinen Array einlesen? Geht ein String nicht?
Und, kann ich einen Array auch auf- oder absteigend sortieren? Das wäre wirklich ein Traum!

Vielen Dank schon mal!
G.

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 30. Jun. 2008 09:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Guten Morgen Gilbert,

so wirklich blicke ich nicht durch was du vor hast. Jedoch kann ich dir gerne ein paar persönliche Tipps (bzw. Vorlieben) mitteilen.

Ein ReDim eines Array sollte aus Laufzeit Gründen so oft es geht vermieden werden.
Einfach das Array vor der Schleife auf die richtige Größe bringen:

Code:
ReDim XYZArray(0 To pointCount - 1)

Warum wandelst du deine Punktkoordinaten in einen String um? Die Bearbeitung wird dadurch doch nur erschwert. Ich würde dir eine Klasse oder UDT in einer Collection (Liste) empfehlen. Das geht zwar in VB6 nicht ganz so schön wie in .net, aber mir persönlich gefällt es besser!

Code:
'UDT festlegen
Public Type MyPoint
  X As Double
  Y As Double
  Z As Double
End Type

'UDT verwenden
Dim oPoint as MyPoint
'X Koordinate
Debug.Print oPoint.X


Sortieren kann man ein Array oder eine Collection klar. Einfach mal googln, ist nicht wirklich schwer.

------------------
Mfg Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 30. Jun. 2008 09:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen Dank für Deine Antwort!

Der Grund, wieso ich einen String brauche (denke ich jedenfalls), ist der, dass ich das dann in Datei schreiben möchte.
Und hier: strOneLine = xValue & Chr(9) & yValue & Chr(9) & zValue füge ich noch einen Tabulator zwischen meine Werte.

Ich werde aber Dein Snippet gerne mal ausprobieren!

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 30. Jun. 2008 09:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Hallo Gilbert,

Ok, soweit schon mal klar! Aber wieso eine Schleife und ein Array?
Du belegst doch die drei Value Variablen mit fixen Werten und schreibst diese einmal.
Darauf ReDim's du zwei mal dein Array. Einmal ohne Preserve (alle vorhandenen Werte im Array gehen verloren) und einmal mit. Das bringt natürlich nichts!
Die Frage die sich mir stellt ist also warum die Schleife und das Array?

------------------
Mfg Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 30. Jun. 2008 14:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Der Master-Plan war, dass ich den Array sortieren kann.
Leider liest SolidWorks die Punkte wild durcheinander ein und nicht schön einer Reihenfolge nach.
Dann, wenn ich aus den Punkten wieder eine Kurve machen will, überschniedet sich diese. Meine Idee war, wenn ich den Array sortiere, kann ich das total cool umgehen! 
Aber ich kann nicht eine Datei sortieren, das geht leider nicht. Also brauche ich einen riesigen Array...

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tbd
Moderator
Teamleiter


Sehen Sie sich das Profil von tbd an!   Senden Sie eine Private Message an tbd  Schreiben Sie einen Gästebucheintrag für tbd

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600

erstellt am: 02. Jul. 2008 07:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für G. Dawg 10 Unities + Antwort hilfreich

Guten Morgen Gilbert,

da ich wieder im Lande bin, hier mal meine Meinung dazu.
Mit .net könnte man diese Aufgabe sehr einfach erledigen. In VB6 kann ich dich nur auf die verschiedenen Sortierverfahren verweisen, welche man im Netz findet (zum Beispiel hier und hier).

Allerdings halte ich das ganz für sehr gefährlich. Angenommen du sortierst deine Punkte auf der X-Achse und deine Kurve macht auf dieser Achse einen Bogen, wodurch es zwei Punkte auf der X-Achse (oben und unten) gibt?! Soweit ich mich erinnern kann, gibt SolidWorks z.B. über GetPoints2 bei Splines immer eine korrekte Punktereihenfolge zurück.

------------------
Mfg Daniel

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

G. Dawg
Ehrenmitglied V.I.P. h.c.
Teamleiter FEM Simulation



Sehen Sie sich das Profil von G. Dawg an!   Senden Sie eine Private Message an GDawg  Schreiben Sie einen Gästebucheintrag für GDawg

Beiträge: 2622
Registriert: 12.07.2004

erstellt am: 03. Jul. 2008 07:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von tbd:
Soweit ich mich erinnern kann, gibt SolidWorks z.B. über GetPoints2 bei Splines immer eine korrekte Punktereihenfolge zurück.

Vielen Dank für die Infos!
Hm, schon interessant! Wieso sollte sich dann eine Kurve überschneiden, wenn die Punkte der richtigen Reihenfolge eingelesen werden? Die Original Punkte überschneiden sich ja auch nicht?
Ja, das mit dem Sortieren habe ich auch herausgefunden!  Das lassen wir wieder sein!

Array sortieren:

Code:
First = LBound(xyzarray)
Last = UBound(xyzarray)
For w = First To Last - 1
    For j = w + 1 To Last
        If xyzarray(w) > xyzarray(j) Then
            Temp = xyzarray(j)
            xyzarray(j) = xyzarray(w)
            xyzarray(w) = Temp
        End If
    Next j
Next w

Irgendwo muss noch ein Fehler liegen, wenn sich die Kurve überschneidet (laut SolidWorks) und doch nicht!?!? 

------------------

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz