![]() |
|
|||||||
| Newsgroup microsoft.public.de.access Forum microsoft.public.de.access |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#1
|
|||
|
|||
|
Moin zusammen,
ich möchte ein gefüllten Array per Schleife auslesen. Der Array ist wie folgt befüllt: ArrHaus(Keller; Etage; Dach) So hatte ich mir das gedacht (Beispielhaft): Dim vIndex as integer For vIndex = LBound(ArrHaus) To UBound(ArrHaus) Debug.Print ArrgHaus(vIndex) Next vIndex Nur leider wird nur "Dach" ausgegeben. Die Zeilen davor sind da, aber leer (ohne Werte). Nach meinem Verständnis wird in die Schleife eingetreten, vIndex wird mit '1' befüllt. Dann soll Array(1) ausgegeben werden. Dann wird durch 'Next vIndex' 'vIndex' um 1 hochgezählt und Array(2) soll ausgegeben werden. Aber 1 und 2 sind wie gesagt ohne Werte. LBound und UBound haben die richtigen Werte im Einzelschrittmodus (1 to 3) Was mache ich falsch? Hat jemand einen TIpp? Danke Stefan. Vista 64 bit, Acc 2007 alle SP |
|
|
||||
|
||||
|
|
|
#2
|
|||
|
|||
|
ooooh Fehlerteufel:
Dim vIndex as integer For vIndex = LBound(ArrHaus) To UBound(ArrHaus) Debug.Print ArrHaus(vIndex) Next vIndex |
|
#3
|
|||
|
|||
|
Hallo Stefan,
Stefan Paesch schrieb: > ich möchte ein gefüllten Array per Schleife auslesen. > Der Array ist wie folgt befüllt: ArrHaus(Keller; Etage; Dach) > > So hatte ich mir das gedacht (Beispielhaft): > > Dim vIndex as integer > > For vIndex = LBound(ArrHaus) To UBound(ArrHaus) > Debug.Print ArrgHaus(vIndex) > Next vIndex > > Nur leider wird nur "Dach" ausgegeben. Die Zeilen davor sind da, aber > leer (ohne Werte). > > Nach meinem Verständnis wird in die Schleife eingetreten, vIndex wird > mit '1' befüllt. Dann soll Array(1) ausgegeben werden. > Dann wird durch 'Next vIndex' 'vIndex' um 1 hochgezählt und Array(2) > soll ausgegeben werden. > Aber 1 und 2 sind wie gesagt ohne Werte. > > LBound und UBound haben die richtigen Werte im Einzelschrittmodus (1 > to 3) > Was mache ich falsch? Hat jemand einen TIpp? schau bitte mal in die OH. Die Funktion LBOUND hat noch eine zweiten Parameter. Damit kannst Du die Dimension angeben, die Du auswerten möchtest. Aus der OH: - - 8< - - 8< - - 8< - - LBound gibt für ein Datenfeld mit den folgenden Dimensionen die in der anschließenden Tabelle aufgeführten Werte zurück: Dim A(1 To 100, 0 To 3, -3 To 4) Anweisung Rückgabewert Lbound(A, 1) 1 Lbound(A, 2) 0 Lbound(A, 3) -3 - - 8< - - 8< - - 8< - - Wenn Du also Dein komplette Array durchlaufen möchtest müsste Dein Code ungefähr so aussehen: - - 8< - - 8< - - 8< - - Dim i As Integer Dim j As Integer Dim k As Integer For i = LBound(ArrHaus,1) To UBound(ArrHaus,1) For j = LBound(ArrHaus,2) To UBound(ArrHaus,2) For k = LBound(ArrHaus,3) To UBound(ArrHaus,3) Debug.Print ArrHaus(i,j,k) Next k Next j Next i - - 8< - - 8< - - 8< - - CU -- Thomas Homepage: www.Team-Moeller.de |
|
#4
|
|||
|
|||
|
Hallo Thomas,
danke für Deine Antwort. Ich denke, mein Problem produziere ich schon beim befüllen des Arrays (glaube ich). Ausgangssituation: Die Grundrisse der einzelnen Etagen (Keller, Wohnung, Dachboden) sind als PDF auf der Festplatte gespeichert. Mit einem DateiDialog sollen z.B. drei Dateien gleichzeitig geöffnet werden. Der FileDialog ist als Funktion ausgelegt, die die Dateien (Anzahl erst einmal unbekannt) in einen Arry zur weiteren Bearbeitung einlesen soll. ......... If .Show Then For Each vAuswahl In .SelectedItems 'durchlaufen der markierten Auswahl ReDim ArrDateiAuswahl(1 To vIndex) 'Deklarierung der Array-Grösse während der Laufzeit, da vorher Größe nicht bekannt, 'ist Abhängig von der Anzahl der ausgewählten Dateien ArrDateiAuswahl(vIndex) = vAuswahl ' Array befüllen vIndex = vIndex + 1 Next ........... Nun habe ich gelesen, das mit Redim alle bereits im Datrenfeld vorhandenen Werte gelöscht werden. Das wohl mein Problem! Der Code ist also Grütze :-( Wie erhalte ich die schon eingelesenen Werte und füge trotzdem neue Dimensionen an? Danke Stefan. |
|
#5
|
|||
|
|||
|
Hallo Stefan
Nun habe ich gelesen, das mit Redim alle bereits im Datrenfeld vorhandenen Werte gelöscht werden. Das wohl mein Problem! Der Code ist also Grütze :-( Wie erhalte ich die schon eingelesenen Werte und füge trotzdem neue Dimensionen an? Mit Preserve Gruss Thomas |
|
#6
|
|||
|
|||
|
On 2 Nov., 21:36, "Thomas Wolf" <thomasw...*bluewin.ch> wrote:
> Mit Preserve Na da sage ich doch mal danke! Hat geklappt. So siehts dann aus ......... If .Show Then For Each vAuswahl In .SelectedItems ReDim Preserve ArrDateiAuswahl(1 To vIndex) 'Preserve eingefügt ArrDateiAuswahl(vIndex) = vAuswahl ' Array befüllen vIndex = vIndex + 1 Next .......... Also noch einmal Danke an beide Thomas´s. Stefan |
|
|
|
|
![]() |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| foreach-Schleife mit Array von Hashes? | Frank Glück | Newsgroup de.comp.lang.perl.misc | 3 | 10-02-2008 08:15 AM |
| Convert Integer Array in System.Array | Manfred | Newsgroup microsoft.public.de.german.entwickler.dotnet.vb | 2 | 08-29-2008 10:27 PM |
| kommt mein String im Array vor? Array.IndexOf scheint sich zu irren? | Liz Helmecke | Newsgroup microsoft.public.de.german.entwickler.dotnet.vb | 1 | 03-28-2008 12:35 PM |
| Index aus assoziativem Array auslesen | Franc Walter | Newsgroup de.comp.lang.php.misc | 7 | 12-22-2007 10:53 AM |
| Array in for Schleife speichern | Olaf Gleba | Newsgroup de.comp.lang.javascript | 6 | 12-15-2007 02:51 PM |