Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

EWeiss 10. Feb 2007 21:08

Re: [VBScript] Objekte in Arrays ablegen
 
Zitat:

Zitat von Luckie
Der spielt doch keine Rolle. Und wenn er nicht gefunden wird, macht es auch nichts.

JO sieht dann bescheiden aus...
Dein Fehler liegt hier.

Set file = file_array(i)
Filedate = File.DateLastModified

Auf File kommst du nur über 'Scripting' nicht über Scripting.FileSystemObject
Und Set file = kannst du keinen array zuweisen wenn du vorher das Object nicht auf scripting.File initialisiert hast

EDIT:
für file der Pfad Scripting.File
für Filedate Scripting.File.DateLastModified

gruss

EWeiss 10. Feb 2007 21:39

Re: [VBScript] Objekte in Arrays ablegen
 
Hier ein kleines Beispiel..

Habs unten geschrieben und das hier gelöscht.

gruss

EWeiss 10. Feb 2007 21:51

Re: [VBScript] Objekte in Arrays ablegen
 
Sorry PUSH!

Hier deine Lösung. Warst ja eigentlich nahe dran.

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

Set File = fo.Files
For Each File In fo.Files
//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'>" & FileName & "</td>"
ts.WriteLine "</tr>"
Next

Das ist falsch //Set Files = file_array(i)

Wenn es dir Hauptsächlich um das Array geht dann mach es so.

Code:
i = 0
ReDim file_array(Files.Count)
For Each File In Files
  file_array(i) = File & "," & File.DateLastModified & "," & File.Size & "," & File.Name
  i = i + 1
Next
Du mußt das Array dann nur mit dem Delemiter "," spliten dann hast du was du brauchst.
Code:
For i = 0 To UBound(file_array) - 1
  s = Split(file_array(i), ",", -1, vbTextCompare)
  Filedate = s(1)
  Filesize = s(2)
  FileName = s(3)
  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
Das Object selbst kannst du nicht in ein array mit einbinden nur den Wert.

gruss Emil

Luckie 11. Feb 2007 01:23

Re: [VBScript] Objekte in Arrays ablegen
 
Zitat:

Zitat von EWeiss
Das Object selbst kannst du nicht in ein array mit einbinden nur den Wert.

OK, darum ging es mir, ich kann also keine Objekte in einem Array ablegen. Ich wollte das Array dann ein eine Funktion übergeben, die esmir dann sortiert.

Ich habe es jetzt so gemacht:
Code:
' BubbleSort
function bubblesort(arrsort)
  for i = 0 to ubound(arrsort) - 1
    for j = i + 1 to ubound(arrsort) - 1
      s1 = Split(arrsort(i), ",", -1, vbTextCompare)
      filesize1 = s1(2)
      s2 = Split(arrsort(j), ",", -1, vbTextCompare)
      filesize2 = s2(2)
      if filesize1 < filesize2 then
        arrTemp = arrsort(i)
        arrsort(i) = arrsort(j)
        arrsort(j) = arrTemp
      end if
    next
  next
  bubblesort = arrsort
end function
'...

Set files = fo.Files
i = 0
ReDim file_array(files.Count)
For Each file In files
  file_array(i) = file & "," & file.DateLastModified & "," & file.Size & "," & file.Name
  i = i + 1 
Next

ReDim sortedarray(files.Count)
sortedarray = bubblesort(file_array)

For i = 0 To ubound(sortedarray) - 1
  s = Split(sortedarray(i), ",", -1, vbTextCompare)
  Filedate = s(1)
  Filesize = s(2)
  Filename = s(3)
  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 Zeile 29 bekomme ich jetzt den Fehler: "Typen unverträglich". Warum denn das? Es sind doch beides Arrays? Desweiteren scheint er nicht zu sortieren, sondern eigentlich nur das Array durcheinander zu würfeln, als ich es mir mal zur Kontrolle haben ausgeben lassen in der Funktion bubblesort selber.

EWeiss 11. Feb 2007 02:37

Re: [VBScript] Objekte in Arrays ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Michael

Hier ist das beispiel von dir.
Schau mal rein ...

Läuft alles einwandfrei bei mir.
Zum testen mußt du einen Ordner Test auf D:\ erstellen im Rootpfad.

Mit Source ;) von dir.

gruss Emil

Luckie 11. Feb 2007 02:43

Re: [VBScript] Objekte in Arrays ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wo liegt den bei mir der Fehler, dass es nicht läuft? Ich sehe da irgendwie keinen Unterschied.

Im Anhang mal mein Code als vbs Script-Datei.

PS: Bei dir wird es auch nicht richtig sortiert.

EWeiss 11. Feb 2007 02:46

Re: [VBScript] Objekte in Arrays ablegen
 
Liste der Anhänge anzeigen (Anzahl: 1)
PUSH ist ja spät! ;)

Hier ein Pic!
So richtig sortiert da aber nix.

Nach was soll er denn sortieren.

gruß

Luckie 11. Feb 2007 02:49

Re: [VBScript] Objekte in Arrays ablegen
 
Verdammt, warum läuft das bei dir, aber bei mir nicht? :wall: Sortiert werden soll nach der Dateigröße.

EWeiss 11. Feb 2007 02:55

Re: [VBScript] Objekte in Arrays ablegen
 
Zitat:

Zitat von Luckie
Verdammt, warum läuft das bei dir, aber bei mir nicht? :wall: Sortiert werden soll nach der Dateigröße.

Werd nachher mal schauen muss jetzt ins Bett :oops:
Habe jetzt auch mein Scripting bei den Diensten deaktiviert muss das erst einschalten.

gruss Emil

Luckie 11. Feb 2007 03:02

Re: [VBScript] Objekte in Arrays ablegen
 
Besten Dank. Ich gehe jetzt auch erstmal ins Bett. Guten Nacht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:49 Uhr.
Seite 2 von 3     12 3      

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