windows-spieler
Goto Top

VB2010 - einzelne Einträge eines Arrays in ein anderes Array kopieren

vorhanden:
Array "filea" mit den Dateien eines Verzeichnisses, String
ListView "list_foto" mit ebendiesen Dateien, allerdings ohne Pfad, reiner Dateiname
Array "a_dateien", welches alle Dateien aus der Listview mit Pfad enthalten soll, String

Hallo,

mein Problem besteht wohl darin, dass ich auch nach Jahren noch immer keinen blassen Schimmer von Arrays habe. Folgender Quelltext löst den Fehler aus, dass mein Array "a_dateien" nicht groß genug ist, obwohl ich es eigentlich groß gemacht habe, dass es alle Dateien aufnehmen könnte.


Dim a_dateien(list_Foto.Nodes.Count) As String    'hier muss der Fehler liegen  
For i As Integer = 0 To list_Foto.Nodes.Count
    If list_Foto.Nodes.Item(i).Checked = True Then
        Array.Copy(filea, i, a_dateien, i, 1)     'hier taucht der "Argument Exception" auf  
    End If
Next

Ich freue mich über jede Antwort, die bei mir den Kronleuchter zum leuchten bringt face-smile

LG

Windows-Spieler

Content-ID: 190510

Url: https://administrator.de/contentid/190510

Ausgedruckt am: 05.11.2024 um 23:11 Uhr

TsukiSan
TsukiSan 31.08.2012 um 03:06:31 Uhr
Goto Top
Hallo Windows-Spieler,

so schwer sind die Arrays nicht! Lies dich mal in Fachlektüre ein.
ganz kleines Beispiel:
eindimensionales Array:
a(0) = 1
a(1) = 2
a(2) = 3
heisst:
dim a(2) 'mein Array deklariert  
for i = 0 to 2
    a(i) = i + 1
next

Noch ein Beispiel, was dir etwas entgegenkommt in deinem Beipiel.
Du willst deinen "...Count" als höchste Arraynummer deklarieren:
blabla_Count = 5
ReDim a_dateien(blabla_Count)
For i = 0 To blabla_Count
    a_dateien(i) = "Text..." & i  
Next

Probier mal und du wirst deine kleinen Fehler oben ziemlich schnell finden.

Gruss
Tsuki
MrTrebron
MrTrebron 31.08.2012 um 07:12:42 Uhr
Goto Top
Hallo Tsuki,

Also entweder ich hab wegen der frühen Stunde die Augen noch nicht richti auf oder dein letztes Beispiel läuft auch auf einen Fehler.

Du gibst dem Array eine Größe von 5 die For Schleife wirst du aber 6 mal durchlaufen.

Gruß
Norbert
TsukiSan
TsukiSan 31.08.2012 um 08:09:40 Uhr
Goto Top
Moin Norbert,

erstens sind es nur Beispiele von mir und es
sollte trotzdem funktionieren, da das Array im zweiten Code-Beispiel von
0 bis 5 - macht also 6! - deklariert ist face-wink

Ich hole mir erst mal einen Kaffee face-wink

Gruss
Tsuki
Bubele
Bubele 31.08.2012 um 08:19:12 Uhr
Goto Top
Zitat von @TsukiSan:
...und es
sollte trotzdem funktionieren, da das Array im zweiten Code-Beispiel von
0 bis 5 - macht also 6! - deklariert ist face-wink

Also das weiß ich als C++-Newbie (habs nur bis objektorientiert gelernt also Basics) sogar. In der Programmiersprache zählt man immer die 0 mit. Es sei denn man sagt ihm er soll bei 1 anfangen.
chaotize
chaotize 31.08.2012 um 08:36:00 Uhr
Goto Top
Also kenn mich nicht wirklich mit Visual Studio aus aber td müsste es doch die möglichkeit geben beispielsweise anstatt dem Array eine generische List zu verwenden. Zumindest dürftest du damit keine "Platzprobleme" haben. Wäre nur mal ein Tipp. ;)
MrTrebron
MrTrebron 31.08.2012 um 08:44:12 Uhr
Goto Top
Servus Tsuki,

wenn ich dem Array sage es ist 5 groß, dann heißt das beim Array (Nullbasierender Index) 0 - 4.
In deiner For Schleife gehe ich aber von 0 - 5 und das macht 6.

Gruß
Norbert

PS: Nach dem ersten Kaffee
TsukiSan
TsukiSan 31.08.2012 um 09:04:23 Uhr
Goto Top
Hallo Nobert,

hoffe, dein Kaffee war genau so lecker wie meiner face-wink

Also ich habe das mal mit VBS und VB6 eben probiert und beides
bringt keinen Fehler weil wenn ich schreibe
dim a(5)
dann heisst das:
a(0)
a(1)
a(2)
a(3)
a(4)
a(5)

Berichtige mich, wenn ich Unrecht habe.

Hole mir gleich noch einen Kaffee face-wink

Gruss
Tsuki
TsukiSan
TsukiSan 31.08.2012 um 09:39:14 Uhr
Goto Top
Also, wenn Nobert und ich schon etwas über Arrays diskutieren, dann sollte es sinnhaft für den TO sein.

Nobert hat mit seinem Hinweis erst einmal völlig Recht!
Wenn ich ein 5-Elemente-Array habe dann bedeutet das ArryName(0 bis 4).
Da die meisten Arrays Nullbasierend sind - ich gehe mal bei VB2010 auch davon aus! -
ergibt sich in meinem Beispiel ganz oben
blabla_Count = 5
ReDim a_dateien(blabla_Count)
ein 6-Elemente-Array (oder das Array ist 6 groß).

Was der TO schon richtig erfasst hat ist seine Zeile1 in seinem Code-Schnipsel.
Bei "irgendwas-COUNT" würde ich mindestens mal einen Integer erwarten und diesen
nicht mit as String verwirren.
In seiner Zeile4 weiss das Programm nicht, welches Array-Element genommen werden soll.

Da ich VB2010 nicht habe bitte mal prüfen, ob meine Ideen so richtig sind.

Gruss
Tsuki
MrTrebron
MrTrebron 31.08.2012 um 09:44:21 Uhr
Goto Top
Servus Tsuki,

da merkt man mal wie lange es her ist das ich mit Arrays gearbeitet hab die ich mit einer For i -Schleife durchlaufen hab.
(In meinen Fällen nutze ich immer For Each)

Gruß
TsukiSan
TsukiSan 31.08.2012 aktualisiert um 09:52:04 Uhr
Goto Top
Hallo Norbert,

bei mir ist das genauso. Man arbeitet damit, ohne noch viel drüber nachzudenken und die
meisten Fachbegriffe muss man sich erst einmal wieder in Erinnerung rufen.

Bin ja auch kein Lehrer, sondern arbeite damit face-wink

Schönes We

Tsuki