Läsa två sista raderna från fil och visa dem i en meddelanderuta
/*
Jag har ett pyttelitet problem och det är att det inte läser in de två sista raderna från filen och visar dem i en meddelanderuta, istället skrivs bara den sista raden.
Alltså, hur gör jag för att skriva ut både den nästsista samt sista raden i en meddelanderuta?
*/
var fil = "hejsan.txt";
var EJSKYDD = true;
var LASNING = 1;
//Skapa filströmsobjekt
var objMinFil = WScript.CreateObject("Scripting.FileSystemObject");
//skapa ett textdokument med några rader
var objText = objMinFil.CreateTextFile(fil,EJSKYDD);
objText.WriteLine("hejsan");
objText.WriteLine("vad");
objText.WriteLine("heter");
objText.WriteLine("du");
objText.WriteLine("din");
objText.WriteLine("räv");
WScript.sleep(500);
//Öppna filen för läsning som textström
var objReadFile = objMinFil.OpenTextFile(fil,LASNING);
//kontrollerar att första raden finns
var blnRadFinns = !(objReadFile.AtEndOfStream);
//While slinga som läser loggfilen till o med sista raden.
while(blnRadFinns)
{
strInnehall = objReadFile.ReadLine();
blnRadFinns = !(objReadFile.AtEndOfStream);
}
WScript.sleep(1000);
WScript.Echo(strInnehall);
Nu skriver jag bara fragment av kodrader...och delar av koden
while(RadFinns)
{
strSist=...
if(RadFinns=...)
break;
strNsist=strSist;
strSist=...
RadFinns=...
}
Tyvärr så förstår jag ej något..
delz skrev :Tyvärr så förstår jag ej något..
I stället för att läsa en rad i varje while-loop så läser du två rader.
Sedan ska du hålla reda på vilken du läst sist, även när antalet rader är udda.
Ett grundläggande fel. Du skriver filen, operativsystemet lägger det du skriver i en intern buffer tills den är tillräckligt stor för att skrivas till fil.
Sedan börjar du läsa filen. Vad har du glömt?