Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [VBScript] Objekte in Arrays ablegen (https://www.delphipraxis.net/86052-%5Bvbscript%5D-objekte-arrays-ablegen.html)

Luckie 8. Feb 2007 11:17


[VBScript] Objekte in Arrays ablegen
 
Ich versuche gerade Objekte in einem Array abzulegen und wieder auszulesen. Als Beispiel habe ich Dateien in einem Verzeichnis:
Code:
Set fo = fso.GetFolder(FOLDER)

Set files = fo.Files
i = 0
For Each file in files
  ReDim file_array(i+1)
  file_array(i) = file
  i = i + 1
Next

For i = 0 to ubound(file_array)
  file = file_array(i)
  Filedate = file.DateLastModified
  Filesize = file.Size
  Filename = file.Name
  ts.WriteLine "<tr>"
  ts.WriteLine "<td class='date'>" & Filedate & "</td>"
  ts.WriteLine "<td class='size'>" & Filesize & "</td>"
  ts.WriteLine "<td class='name'>[url='" & fo.Path & "/" & Filename & "']" & Filename & "[/url]</td>"
  ts.WriteLine "</tr>"
Next
In dem Array file_array befinden sich, oder sollten sich befinden, die file-Objekte. Allerdings sagt er mir in der For-Schleife, das er hier: Filedate = file.DateLastModified ein Objekt erwartet. Ein Cast nach Scripting.FileSystemObject.File hat auch nicht geholfen. Wie komme ich also an die Objekte dran?

Luckie 10. Feb 2007 19:01

Re: [VBScript] Objekte in Arrays ablegen
 
Ich muss das noch mal nach oben holen. Ist zwar nicht überlebenswichtig, aber mein Berufsschullehrer meinte, ich solle die Datei-ausgabe mal sortieren, so als Zusatzaufgabe. Dazu wollte ich eben alle Datei-Objekte in einem Array sammeln und dieses Array dann sortieren.

thkerkmann 10. Feb 2007 19:25

Re: [VBScript] Objekte in Arrays ablegen
 
Hi,

ich glaube das geht mit einm solchen Feld nicht. Dafür gibt es das Collection Object, welches wiederum Objekte aufnehmen kann

Code:
  Dim names As New Microsoft.VisualBasic.Collection()
Näheres in der MSDN

Gruss

[Edit]
Oh Mist, ich seh grad du hast ja VBScript geschrieben. Da gibt es die Collection natürlich nicht, sorry.
[/Edit]

Luckie 10. Feb 2007 19:56

Re: [VBScript] Objekte in Arrays ablegen
 
Oder alternativ gibt es eine Klasse die mit der Delphi Klasse TList vergleichbar ist?

EWeiss 10. Feb 2007 20:09

Re: [VBScript] Objekte in Arrays ablegen
 
Hi

ganz oben in den Kopf der Form setzen
Code:
Option Explicit 'Fehlermeldung ausgeben
Private fso As Scripting.FileSystemObject 'object initialisieren
Dazu muss im Menü/Projekt/Verweise erst die Laufzeit Bibliothek 'Microsoft Scripting Runtime' importiert werden.

gruss

Luckie 10. Feb 2007 20:11

Re: [VBScript] Objekte in Arrays ablegen
 
So weit bin ich schon. ;)
Code:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Script       : Verzeichnis in einer HTML-Datei ausgeben                    '
' File         : 04_02_Dir2HTML.vbs                                          '
' Date         : 2007-02-08 - Last modified: 2007-02-08                       '
'                                                                             '
'              Michael Puff - [url]http://www.michael-puff.de[/url]                     '
'                                                                             '
'              Durch ein File-Container Attribut iterieren                   '
'              Erzeugen einer Textdatei                                      '
'              Aufruf des IE-COM Objektes                                    '
'              Funktionsaufrufe                                              '
'              Dynamische Arrays                                             '
'                                                                             '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Constants
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
FOLDER = "D:\Homepage\michael-puff.de\Berufsschule\Anwendungsentwicklung - Johlen\VBScripte"
HTMLFILE = "index.html"
STYLESHEET = "D:\Homepage\michael-puff.de\Berufsschule\Anwendungsentwicklung - Johlen\VBScripte\stylesheet.css"
OUTFOLDER = "D:\Homepage\michael-puff.de\Berufsschule\Anwendungsentwicklung - Johlen\VBScripte"

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim file_array()

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Subs
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Page header
private sub HTMLHeader(ts)
  ts.WriteLine "<html>"
  ts.WriteLine "<head><link rel='stylesheet' type='text/css' href='" & STYLESHEET & "'></head>"
  ts.WriteLine "<body>"
end sub

' Page footer
private sub HTMLFooter(ts)
  ts.WriteLine "</body>"
  ts.WriteLine "</html>"
end sub

' BubbleSort
function bubblesort(arrSortieren)
  for i = 0 to ubound(arrSortieren)
    for j = i + 1 to ubound(arrSortieren)
      if arrSortieren(i) > arrSortieren(j) then
        arrTemp = arrSortieren(i)
        arrSortieren(i) = arrSortieren(j)
        arrSortieren(j) = arrTemp
      end if
    next
  next
  bubblesort = arrSortieren
end function

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Set fso = CreateObject("Scripting.FileSystemObject")


Set ts = fso.CreateTextFile(OUTFOLDER & HTMLFILE)

HTMLHeader(ts)

Set fo = fso.GetFolder(FOLDER)
title = "Index of " & fo.Path

ts.WriteLine "<h2>" & title & "</h2>

"

ts.WriteLine "<table class='dir'>"
ts.WriteLine "<th class='date'>Last modified</th><th class='size'>Size</th><th class='name'>file name</th>"

Set files = fo.Files
i = 0
ReDim file_array(files.Count)
For Each file in files
  file_array(i) = file
  i = i + 1
Next

For i = 0 to ubound(file_array)
  Set file = file_array(i)
  Filedate = file.DateLastModified
  Filesize = file.Size
  Filename = file.Name
  ts.WriteLine "<tr>"
  ts.WriteLine "<td class='date'>" & Filedate & "</td>"
  ts.WriteLine "<td class='size'>" & Filesize & "</td>"
  ts.WriteLine "<td class='name'>[url='" & fo.Path & "/" & Filename & "']" & Filename & "[/url]</td>"
  ts.WriteLine "</tr>"
Next

ts.WriteLine "<tr><td class='date'>File(s): " & fo.files.Count & "</td></tr>"
ts.WriteLine "</table>"

HTMLFooter(ts)

ts.Close

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Set ie = CreateObject("InternetExplorer.Application.1")
ie.Visible = True
ie.Navigate(OUTFOLDER & HTMLFILE)
Und es ist ein VBS Script und keine Visual Basic Anwendung. Und in Zeile 85 kommt die Fehlermeldung, dass er ein Objekt erwarter, er aber offensichtlich keins bekommt. Irgendwie scheint er also alles andere in dem Array abzulegen nur keon Objekt. :wall:

EWeiss 10. Feb 2007 20:36

Re: [VBScript] Objekte in Arrays ablegen
 
Zitat:

Und es ist ein VBS Script und keine Visual Basic Anwendung
Ist doch das selbe!

Wo ist der unterschied?

Code:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Script       : Verzeichnis in einer HTML-Datei ausgeben                    '
' File         : 04_02_Dir2HTML.vbs                                          '
' Date         : 2007-02-08 - Last modified: 2007-02-08                       '
'                                                                             '
'              Michael Puff - [url]http://www.michael-puff.de[/url]                     '
'                                                                             '
'              Durch ein File-Container Attribut iterieren                   '
'              Erzeugen einer Textdatei                                      '
'              Aufruf des IE-COM Objektes                                    '
'              Funktionsaufrufe                                              '
'              Dynamische Arrays                                             '
'                                                                             '
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Constants
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim file_array()
Dim FOLDER As String
Dim HTMLFILE As String
Dim STYLESHEET As String
Dim OUTFOLDER As String

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Subs
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Page header
Private Sub HTMLHeader(ts)
  ts.WriteLine "<html>"
  ts.WriteLine "<head><link rel='stylesheet' type='text/css' href='" & STYLESHEET & "'></head>"
  ts.WriteLine "<body>"
End Sub

' Page footer
Private Sub HTMLFooter(ts)
  ts.WriteLine "</body>"
  ts.WriteLine "</html>"
End Sub

' BubbleSort
Function bubblesort(arrSortieren)
  For i = 0 To UBound(arrSortieren)
    For j = i + 1 To UBound(arrSortieren)
      If arrSortieren(i) > arrSortieren(j) Then
        arrTemp = arrSortieren(i)
        arrSortieren(i) = arrSortieren(j)
        arrSortieren(j) = arrTemp
      End If
    Next
  Next
  bubblesort = arrSortieren
End Function


Private Sub Command1_Click()

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.CreateTextFile(OUTFOLDER & "\" & HTMLFILE)

Call HTMLHeader(ts)

Set fo = fso.GetFolder(FOLDER)
Title = "Index of " & fo.Path

ts.WriteLine "<h2>" & Title & "</h2>

"

ts.WriteLine "<table class='dir'>"
ts.WriteLine "<th class='date'>Last modified</th><th class='size'>Size</th><th class='name'>file name</th>"

Set Files = fo.Files
i = 0
ReDim file_array(Files.Count)
For Each file In Files
  file_array(i) = file
  i = i + 1
Next

For i = 0 To UBound(file_array)
  Set Files = file_array(i)
  Filedate = file.DateLastModified
  Filesize = file.Size
  FileName = file.Name
  ts.WriteLine "<tr>"
  ts.WriteLine "<td class='date'>" & Filedate & "</td>"
  ts.WriteLine "<td class='size'>" & Filesize & "</td>"
  ts.WriteLine "<td class='name'>[url='" & fo.Path & "/" & FileName & "']" & FileName & "[/url]</td>"
  ts.WriteLine "</tr>"
Next

ts.WriteLine "<tr><td class='date'>File(s): " & fo.Files.Count & "</td></tr>"
ts.WriteLine "</table>"

HTMLFooter (ts)

ts.Close


'Set ie = CreateObject("InternetExplorer.Application.1")
ie.Visible = True
ie.Navigate (OUTFOLDER & HTMLFILE)

End Sub

Private Sub Form_Load()


FOLDER = "D:\Test"
HTMLFILE = "index.html"
STYLESHEET = "D:\Test\stylesheet.css"
OUTFOLDER = "D:\Test"

End Sub
Edit:
Wenn du die zuordnung mit set nicht richtig auf das Object legst dann
gibt es eine nachfrage nach diesen Object 'Fehlermeldung' Object erwartet.

gruss

Luckie 10. Feb 2007 20:38

Re: [VBScript] Objekte in Arrays ablegen
 
Und deins funktioniert? Wo ist der Fehler bei mir?

Bei mir sagt er in Zeile 25: "Anweisungsende erwartet."

EWeiss 10. Feb 2007 20:43

Re: [VBScript] Objekte in Arrays ablegen
 
Zitat:

Zitat von Luckie
Und deins funktioniert? Wo ist der Fehler bei mir?

Bei mir sagt er in Zeile 25: "Anweisungsende erwartet."

Na kann es nicht richtig testen da die stylesheet.css bei mir nicht im Ordner 'Test'
existiert.

gruss

Luckie 10. Feb 2007 20:45

Re: [VBScript] Objekte in Arrays ablegen
 
Der spielt doch keine Rolle. Und wenn er nicht gefunden wird, macht es auch nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz