Textdatei mit fortlaufender Nummer speichern...

fototec

Active Member
#1
Hallo,
mal wieder ein kleines problem mit js, für mich zumindest..
ich schreibe in eine txt (Test.txt) eine Eingabe aus einem Inputfeld mit folgendem scriptcode:

Javascript:
function Hinzufuegen1() {
      
                var fso1 = new ActiveXObject("Scripting.FileSystemObject");
      
                    if(document.getElementById("text1").value == ""){
                    window.alert("Bitte geben Sie den Text an" + ", der gespeichert werden soll.");
                    return false;
                }
      
                    else{
    
                var s1 = fso1.OpenTextFile("Test.txt", 8, true, 0);
                
                
                

                    s1.Write(document.getElementById("text1").value+ "\n");
                    location.reload();
        
                s1.Close();
      
                }
      
                                }


im txt wird geschrieben :

meine Eingabe
meine Eingabe
meine Eingabe
usw.

soweit alles gut, aber ich hätte gern das er jede Eingabe die ich mach mit einer reihenzahl versieht..

Beispiel:

1. meine Eingabe
2. meine Eingabe
3. meine Eingabe

das würde bedeuten mein script müsste das Test.txt erst lesen auswerten und weiterschreiben...
ich hab leider keine lösung.

vieleicht habt ihr eine Idee..

danke und Gruß fototec
 

Patrik Graf

Well-Known Member
c-b Team
#2
Die Lösung heisst "Regular Expressions", kurz Regexp. Sogesehen kannst du dann alles machen wie bisher, ausser dass du eben herausfinden musst, was in der letzten Zeile steht. Von dieser musst dann eben nur noch die Zahl am Anfang lesen. Vielleicht klappt ja folgendes:

Javascript:
var zeilen = s1.ReadAll().split('\r\n'); // Array mit jeder Zeile
var zahl = Number(zeilen[zeilen.length - 1].search(/^[0-9]*/)); // Die Zahl mit n Stellen am Anfang der Zeile

zahl++; // Zahl um 1 erhöhen
Hoffe, dass hilft dir weiter. :)
 
Zuletzt bearbeitet:

Patrik Graf

Well-Known Member
c-b Team
#11
Ok... ich hab jetzt mal ein komplettes Beispiel auf Basis deines Codes erstellt. Ich muss zugeben, dass Verwenden von find() war nicht zielführend, da es nur den Index des gefundenen Textes zurückgibt. Um den Substring per RegEx zu bekommen, benötigt man match().

Javascript:
function Hinzufuegen1() {
    
    var fso1 = new ActiveXObject("Scripting.FileSystemObject");

    if (document.getElementById("text1").value == "") {
        window.alert("Bitte geben Sie den Text an" + ", der gespeichert werden soll.");
        
        return false;
    } else {
        var fr = fso1.OpenTextFile("Test.txt", 1, true, 0);
        var text = fr.AtEndOfStream ? "" : fr.ReadAll();
        var zeilen = text.split('\r\n'); // Array mit jeder Zeile
        if (zeilen.length > 1 && zeilen[zeilen.length - 1] == "") {
            zeilen.pop();
        }
        var zahl = Number(zeilen[zeilen.length - 1].match(/^[0-9]*/)[0]); // Die Zahl mit n Stellen am Anfang der Zeile
        zahl++; // Zahl um 1 erhöhen
        fr.Close();
        
        var s1 = fso1.OpenTextFile("Test.txt", 8, true, 0);
        s1.WriteLine(String(zahl) + ". " + document.getElementById("text1").value);
        location.reload();
        s1.Close();
    }
}
Bei mir hat es funktioniert. Bei dir hoffentlich auch. ;)
 
Oben