Autor Thema: Attempt to access unitialized dynamic arra  (Gelesen 2753 mal)

Offline Barbara

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Weiblich
Attempt to access unitialized dynamic arra
« am: 24.10.07 - 10:28:47 »
Hallo zusammen,
meine Aufgabenstellung:
- user scannt Dokumente, legt sie auf ein definiertes Verzeichnis
- in einer NotesDB wurden Angaben zu den einzelnen Dokumenten gemacht (Mehrfachfelder in einem Dokument)
- per Knopfdruck werden einzelnen Notesdokumente erstellt, die umbenannten Dateien jeweils passend in die neu erstellten Dokumente als Attachment eingefügt.

Funktioniert dank Filesystem Class auch super. Jetzt bin ich bei der Fehlerabfrage. Sind keine Dateien im Verzeichnis abgelegt, soll eine Klartextmeldung kommen. mein script:

Function renamefile(strpath, ort As String)
   Dim datum As notesdatetime    
   Dim fso As Variant
   Dim folder As Variant
   Dim newfile As Variant
   Dim oldfile As Variant
   Dim files() As String
   Dim newname() As String
   Dim ymd As String
   Dim endung As String
   Dim i As Integer
   
   'Dateien im Ordner auslesen"
   Set fso = CreateObject( "Scripting.FileSystemObject" )
   If Not Isempty(fso) Then   
      Set folder=fso.getfolder(strpath)
      Forall file In folder.Files
         Redim Preserve files(i)
         files(i) = file.Name
         i= i+ 1
      End Forall
      
   'neuen Namen zusammensetzen
      If Isarray(files) Then
         Set datum= New notesdatetime (Today)   'Aktuelles Datum
         ymd=Format(Year(datum.Dateonly),"0000")+Format(Month(datum.Dateonly),"00")+Format(Day(datum.Dateonly),"00")
         For n=0 To Ubound(files)
            endung=Strrightback(files(n),".")
            Redim Preserve newname(n)
            newname(n)= strpath + ort + ymd + Cstr(n+1)+ "." + endung
         Next
      Else
         Msgbox "Es sind keine Dateien im Ordner!"
         Exit Function
      End If

Mein Problem: Isarray(files) ist immer true, daraus resultiert obige Fehlermeldung bei "For n=0 To Ubound(files)"
habe auch mit "Not isempty(files)" probiert, das funktioniert auch nicht.

Wie frage ich ab, ob es dieses array gibt?
Ich weiß, diese Frage gab es hier schon öfter, aber mit den Lösungsansätzen komme ich jetzt nicht weiter.

Hat jemand eine Idee?

Gruß
Barbara

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Attempt to access unitialized dynamic arra
« Antwort #1 am: 24.10.07 - 11:00:21 »
Das ist Richtig, das Du ein True bekommst.

Aus der Hilfe:

Dim arrayFixed(1 To 5)   
Dim arrayDynam()
Print IsArray(arrayFixed)     ' Output:  True
Print IsArray(arrayDynam)     ' Output:  True

Wenn Du auf UBound(files) > 0 fragst dann kommst Du weiter.

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Barbara

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Weiblich
Re: Attempt to access unitialized dynamic arra
« Antwort #2 am: 24.10.07 - 11:31:35 »
Hallo André,
auch das bringt mir die Fehlermeldung.

Ich werde jetzt die brutale Methode anwenden und die Datenbank ganz neu erstellen. Mal gucken was dann passiert.

Barbara

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Attempt to access unitialized dynamic arra
« Antwort #3 am: 24.10.07 - 11:44:32 »
Das wird auch nichts bringen...

Ist zwar aus R4 Zeiten aber ich glaube da hat sich nichts geändert.  :P

http://atnotes.de/index.php?topic=3167.0

Wenn ich falsch Liege korrigiert mich.

André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline Barbara

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Weiblich
Re: Attempt to access unitialized dynamic arra
« Antwort #4 am: 24.10.07 - 12:00:04 »
Richtig hat nichts gebracht.


"if not(files is nothing)" wird beim Speichern schon als Fehler im script erkannt => Type mismatch

Das kann es doch nicht sein, dass man bei so einer "Popelabfrage" 'ne neue Klasse braucht?
das zeigt mir der Debugger: siehe Anhang

Barbara

klaussal

  • Gast
Re: Attempt to access unitialized dynamic arra
« Antwort #5 am: 24.10.07 - 12:05:54 »
Mal so auf die Schnelle: wenn keine Dateien da sind, müsste dann nicht der Zähler i auf 0 stehen (wenn du den vorher irgendwannn initialisierst) ?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attempt to access unitialized dynamic arra
« Antwort #6 am: 24.10.07 - 12:11:50 »
Da files schon als Array deklariert wurde, ist Isarray immer True. Nothing ist auf Arrays nicht anwendbar.

"Leer" ist files unter folgender Bedingung:
Ubound (files) = 0 And files (0) = "".

Bernhard

Offline Barbara

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Weiblich
Re: Attempt to access unitialized dynamic arra
« Antwort #7 am: 24.10.07 - 12:27:12 »
@Bernhard: Ubound (files) = 0 And files (0) = "" bringt diesselbe Fehlermeldung

Ich stehe wieder mal wie ein Ochs vor dem Berg. Ich muss jetzt erstmal meinen Kindern was kochen, da komme ich auf ganz andere Gedanken (hoffentlich) und probiere es heut mittag auf ein Neues (mit neuen Ideen ?  ;))

Barbara

klaussal

  • Gast
Re: Attempt to access unitialized dynamic arra
« Antwort #8 am: 24.10.07 - 13:03:23 »
Hast Du #5 gelesen ?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attempt to access unitialized dynamic arra
« Antwort #9 am: 24.10.07 - 13:07:28 »
Was ich geschrieben habe, war Blödsinn - das Array ist ja uninitialisiert, damit gibt es kein 0. Element.

Was Andre geschrieben hat, ist auf jeden Fall richtig und in diesem Fall wohl der gangbarste Weg.

Umständlicher (und hier unnötig) wäre
Dim bEmpty As Integer
bEmpty = True
Forall f In files
   bEmpty = False
End Forall

bEmpty ist dann True, wenn files noch nicht belegt wurde.

Bernhard

klaussal

  • Gast
Re: Attempt to access unitialized dynamic arra
« Antwort #10 am: 24.10.07 - 13:16:24 »
@Bernhard,

das ist doch fast das Gleiche, wie wenn ich i=0 abfragen würde.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attempt to access unitialized dynamic arra
« Antwort #11 am: 24.10.07 - 13:21:31 »
Genau das habe ich doch geschrieben, Klaus.

Bernhard

klaussal

  • Gast
Re: Attempt to access unitialized dynamic arra
« Antwort #12 am: 24.10.07 - 13:23:10 »
Das hatte ich ja schon in #5 vorgeschlagen, scheint aber nicht beachtet worden zu sein  :'(

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Attempt to access unitialized dynamic arra
« Antwort #13 am: 24.10.07 - 13:26:33 »
Ah - noch ein Bug von mir - das warst ja Du und nicht Andre ... Sorry.

Bernhard

klaussal

  • Gast
Re: Attempt to access unitialized dynamic arra
« Antwort #14 am: 24.10.07 - 13:30:14 »
Macht nix  ;)

Offline Barbara

  • Junior Mitglied
  • **
  • Beiträge: 93
  • Geschlecht: Weiblich
Re: Attempt to access unitialized dynamic arra
« Antwort #15 am: 24.10.07 - 15:07:15 »
@Klaus: Entschuldige, dass ich nicht schon vor der Mittagspause auf Deine Antwort eingegangen bin. Ich habe es auf die Schnelle nicht hingekriegt.

Bernhard's "unnötiger" Weg war für mein Verständnis nötig.

Also
i =0 wenn keine Files im Ordner sind. Abfrage auf i funktioniert, wie von Dir und Bernhard auch erwartet.

Bin immer wieder froh, in diesem Forum gelandet zu sein. "da werden Sie geholfen" :)

Danke Euch Allen

Barbara

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz