Gesammelte Werte in Array ablegen

h ich aber es läuft nicht mehr. wo müsse ich ihn den wieder einsetzen? habe es nach der Sortierung, in der Sortierung probiert, erfolglos. ggf. müsste ich die variable ändern. letztendlich muss ich doch das sortierte, welches ja nun in arrayFileData ethalten ist (mit dem dateinamen) noch umbauen - aber dann klappt es nicht. steh auf dem schlauch :confused:
 
Hier mal der Code: dort habe ich den Umbau auch drin, aber klar, weil nirgends zugewiesen (weiß auch nicht wie) nicht korrekt.

Javascript:
var projName = new Array(); //('Projektname')
var ProjDateRoh = null // ('Tue Oct 7 02:53:27 EDT 2008')
var ProjDate = null // ('01.04.2014')
var arrayFileData = [];
     
   

//Alle Files und deren Namen Einlesen
var fileAmount = new ActiveXObject("Scripting.FileSystemObject"); 
var folderObj = fileAmount.GetFolder("C:\\cnc\\USER");  //pfad, später dann in benuzername/dokumente
// erstellen eines Enumerator Typen und Kollektion aller Dateien im Ordner 
var filesCollection = new Enumerator(folderObj.Files); 
var fileObj; 
for (filesCollection.moveFirst(); !filesCollection.atEnd(); filesCollection.moveNext()) { 
    fileObj = filesCollection.item(); 
    projName = fileObj.Name;
    ProjDateRoh = fileObj.Name;
     
    // Datum vom letzten Zugriff der Dateien
    var getProjDateRoh = new ActiveXObject("Scripting.FileSystemObject"); 
    var ProjDateRaw = getProjDateRoh.GetFile("c:\\cnc\\USER\\" + ProjDateRoh);
    ProjDateRoh = ProjDateRaw.DateLastAccessed;//, "DD.MM.YY";
   
    //Auflistung der Dateien
    arrayFileData.push({'name': projName.replace(/.cm5/, "") + ',', 'date': ProjDateRoh + '  '})
    //vom Speicher zurücksetzen
    getProjDateRoh = null
    fileAmount = null
   
}
//sortiere nach datum (letzter Zugriff)

(function(){
  if (typeof Object.defineProperty === 'function'){
    try{Object.defineProperty(Array.prototype,'sortBy',{value:sb}); }catch(e){}
  }
  if (!Array.prototype.sortBy) Array.prototype.sortBy = sb;

  function sb(f){
    for (var i=this.length;i;){
      var o = this[--i];
      this[i] = [].concat(f.call(o,o,i),o);
    }
    this.sort(function(a,b){
      for (var i=0,len=a.length;i<len;++i){
        if (a[i]!=b[i]) return a[i]<b[i]?-1:1;
      }
      return 0;
    });
    for (var i=this.length;i;){
      this[--i]=this[i][this[i].length-1];
    }
    return this;
  }
})();
arrayFileData.sortBy(function(o){ return o.date });

// Datum umbauen
      var zeit = new Date(ProjDateRoh);
      ProjDate  = ('0' + zeit.getDate()).substr(-2) + "." + ('0' + zeit.getMonth()).substr(-2) + "." + ('0' + zeit.getFullYear()).substr(-2) //mit NULL vor Zahl bei einstelliger Ziffer
     
      //projDate muss das ProjDateRoh in arrayFileData ersetzen...???


//Aufgelistete Dateien sortieren und in DIV ausgeben
files = arrayFileData



    insertDiv = function(wrapper, file){
        // neues Element erstellen
        var div = document.createElement('div'),
            content = "",
            _key

        for(_key in file){
            if(file.hasOwnProperty(_key)){
                content +=  " " + file[_key] + "";
            }
        }
        // dem neuen Element Inhalt zuweisen
        div.innerHTML = content;
        // CSS-Eigenschaften über das style-Objekt (z.b. inline-block)
        div.style.display = "inline-block";
        // CSS über Klasse zuweisen
        div.className += " metroFileBoxAuto";
        wrapper.appendChild(div);
    };
 
Du kannst natürlich nicht einfach die zwei Zeilen kopieren. Du musst über dein Array iterieren und jeweils das neue Attribut hinzufügen.
Mir fällt gerade ein, dass das sowieso nicht geht, da du DateLastAccessed nirgends in deiner Datenstruktur zwischenspeicherst, ergo ist es im Nachhinein auch gar nicht mehr verfügbar.

Am besten* fügst du die zwei Zeilen sinngemäß und logisch im Kontext eingebunden vor Zeile 25 wieder ein und speicherst den formatierten String in einem weiteren Attribut.

*) besten = auf Höhe der Qualität deines Skripts. Entschuldigung, aber ich möchte auch nicht dein ganzes Skript umkrempeln, nur um es wartbarer oder lesbarer zu machen.
 
Das erwarte ich ja auch nicht. Da ich Anfänger bin, sind solche Anhaltspunkte für mich wichtig um daraus zu lernen es besser zu machen, sodass auch meine Code-Quali im Laufe der Zeit besser werden :)
Du hilfst mir ja bereits sehr und dafür bin ich dir 1000-mal dankbar.
 
Habe jetzt eweig herumprobiert und mir Beispiele gegoogelt - muss aber zugeben, ich steig nicht dahinter.
mit dem Iterieren habe ich aber auch zugegeben Probleme.
muss erstmal passen. ggf. kann mir ein Kollege nächste Woche helfen und es erklären. wenn ich was hab, werde ich es für andere Posten.
Trotzdem Danke!
 
Hier die Lösung (ENDICH)

Javascript:
var projName = []; //('Projektname')
var ProjDateRoh = null // ('Tue Aug 5 02:53:27 EDT 2014')
var ProjDate = null // ('05.08.2014')
var arrayFileData = [];

//Alle Files und deren Namen Einlesen
var fileAmount = new ActiveXObject("Scripting.FileSystemObject"); 
var folderObj = fileAmount.GetFolder("C:\\cnc\\USER");  //pfad, später dann in benuzername/dokumente
// erstellen eines Enumerator Typen und Kollektion aller Dateien im Ordner 
var filesCollection = new Enumerator(folderObj.Files); 
var fileObj;
for (filesCollection.moveFirst(); !filesCollection.atEnd(); filesCollection.moveNext()) { 
    fileObj = filesCollection.item(); 
    projName = fileObj.Name;
    ProjDateRoh = fileObj.Name;
     
    // Datum vom letzten Zugriff der Dateien
    var getProjDateRoh = new ActiveXObject("Scripting.FileSystemObject"); 
    var ProjDateRaw = getProjDateRoh.GetFile("c:\\cnc\\USER\\" + ProjDateRoh); //pfad, später dann in benuzername/dokumente
    ProjDateRoh = ProjDateRaw.DateLastAccessed;// Date Format ist ('Tue Aug 5 02:53:27 EDT 2014')
   
    // In ein Array abauen
    var fileYear = new Date(ProjDateRoh).getFullYear()
    var fileMonth = ('0' + new Date(ProjDateRoh).getMonth()).substr(-2)
    var fileDay = ('0' + new Date(ProjDateRoh).getDate()).substr(-2)
    var arrayElement = fileYear + fileMonth + fileDay + "_____" + projName
   
    arrayFileData.push(arrayElement)

    //vom Speicher zurücksetzen
    getProjDateRoh = null
    fileAmount = null
}

// Sortiere Datum vom letzten Zugriff der Dateien absteie (neuste zuerst)
arrayFileData.sort().reverse()

//Aufgelistete Dateien sortieren und in DIV ausgeben
files = arrayFileData

    insertDiv = function(wrapper, file){
        var fileName = file.split("_____")[1]
        var fileDay = file.substring(6,8)
        var fileMonth = file.substring(4,6)
        var fileYear = file.substring(2,4)
        var div = document.createElement('div')
        var content = fileName.replace(/.cm5/, "") + ",&nbsp;" + fileDay + "." + fileMonth + "." + fileYear
        // dem neuen Element Inhalt zuweisen
        div.innerHTML = content;
        // CSS-Eigenschaften über das style-Objekt (z.b. inline-block)
        div.style.display = "inline-block";
        // CSS über Klasse zuweisen
        div.className += " metroFileBoxAuto";
        wrapper.appendChild(div);
    };
//

@ComFreek , danke nochmals für die Hinweise und Hilfe - hat mich auf den richtigen Weg gebracht.
 

Neue Beiträge

Zurück