Shoutbox

XML Help... - Printable Version

-Shoutbox (https://shoutbox.menthix.net)
+-- Forum: MsgHelp Archive (/forumdisplay.php?fid=58)
+--- Forum: Messenger Plus! for Live Messenger (/forumdisplay.php?fid=4)
+---- Forum: Scripting (/forumdisplay.php?fid=39)
+----- Thread: XML Help... (/showthread.php?tid=91623)

XML Help... by Haydn5149 on 07-24-2009 at 04:46 AM

Im new at XML, and im wondering how i would...  "load" all the lines of a specified .txt file in to an XML ListBoxControl and then "save" all the info back to the .txt file?


RE: XML Help... by ryxdp on 07-24-2009 at 06:36 AM

Take a look at the ReadLine() method, which should help you a lot (especially the while loop at the end of the first example) ;)

As for saving it again, see the WriteLine method link in the sidebar.


RE: XML Help... by Haydn5149 on 07-24-2009 at 08:17 AM

i made this, it reads the file to the end but it returns

code:
Error: 'undefined' is null or not an object (code: -2146823281)
       File: XMLFile.js. Line: 24.
Error: 'undefined' is null or not an object (code: -2146823281)
       File: XMLFile.js. Line: 24.
Error: 'undefined' is null or not an object (code: -2146823281)
       File: XMLFile.js. Line: 24.

Heres the script

code:
function loadItems(PlusWnd)
{
    var filename = (MsgPlus.ScriptFilesPath + '\\processes2.txt')
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var f = fso.OpenTextFile(filename);
    while (!f.AtEndOfStream)
        {
           var readFileLine = f.ReadLine();
           var PIDv = ReadIni(ConfigFile, 'Processes', readFileLine, 0)
           var MSNn = ReadIni(ConfigFile, 'Names', PIDv, 0)
        PlusWnd.LstBox_AddItem('ProcessLBox', readFileLine, pitems + 1);
        PlusWnd.LstBox_AddItem('FileNameLBox', PIDv, nitems + 1);
        PlusWnd.LstBox_AddItem('MSNNameLBox', MSNn, mitems + 1);
        }
    f.Close();
}

Any ideas?

mitems nitems pitems are globals, read and write ini function exists in my script also
RE: XML Help... by matty on 07-24-2009 at 12:57 PM

You will need to post the entire XMLFile.js code. Use [code=js][/code] to wrap the code to make it easier to read. With just posting that we have no idea what line 24 is.

However I suspect it is because you are not specifying all of the parameters for OpenTextFile.

Javascript code:
function loadItems(PlusWnd) {
    var filename = (MsgPlus.ScriptFilesPath + '\\processes2.txt')
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var f = fso.OpenTextFile(filename, 0x1 /* ForReading */, false /* Do not create if it doesn't exist */);
    while (!f.AtEndOfStream) {
        var readFileLine = f.ReadLine();
        var PIDv = ReadIni(ConfigFile, 'Processes', readFileLine, 0)
        var MSNn = ReadIni(ConfigFile, 'Names', PIDv, 0)
        PlusWnd.LstBox_AddItem('ProcessLBox', readFileLine, pitems + 1);
        PlusWnd.LstBox_AddItem('FileNameLBox', PIDv, nitems + 1);
        PlusWnd.LstBox_AddItem('MSNNameLBox', MSNn, mitems + 1);
    }
    f.Close();
}


RE: XML Help... by Haydn5149 on 07-25-2009 at 05:39 AM

ok, Heres the full XMLFile.js

its not complete, but im just trying to get it to display the contents when loadFiles(PlusWnd) is called

Javascript code:
var pitems;
var pword;
var nitems;
var nword;
var mitems;
var mword;
 
function showConfig(PlusWnd)
{
    WndOptions = MsgPlus.CreateWnd("dialogMain.xml", "options");
    loadItems(PlusWnd);
}
 
function loadItems(PlusWnd)
{
    var filename = (MsgPlus.ScriptFilesPath + '\\processes2.txt')
    var fso = new ActiveXObject("Scripting.FileSystemObject");
    var f = fso.OpenTextFile(filename);
    while (!f.AtEndOfStream)
        {
        var readFileLine = f.ReadLine();
        var PIDv = ReadIni(ConfigFile, 'Processes', readFileLine, 0)
        var MSNn = ReadIni(ConfigFile, 'Names', PIDv, 0)
        PlusWnd.LstBox_AddItem('ProcessLBox', readFileLine, pitems + 1);
        PlusWnd.LstBox_AddItem('FileNameLBox', PIDv, nitems + 1);
        PlusWnd.LstBox_AddItem('MSNNameLBox', MSNn, mitems + 1);
        }
    f.Close();
}
 
function newProcess(PlusWnd)
{
    pitems = PlusWnd.LstBox_GetCount("ProcessLBox");
    pword = PlusWnd.GetControlText('Processes');
    nitems = PlusWnd.LstBox_GetCount("FileNameLBox");
    nword = PlusWnd.GetControlText('FileNames');
    mitems = PlusWnd.LstBox_GetCount("MSNNameLBox");
    mword = PlusWnd.GetControlText('MSNDispNames');
    PlusWnd.LstBox_AddItem('ProcessLBox', pword, pitems + 1);
    PlusWnd.LstBox_AddItem('FileNameLBox', nword, nitems + 1);
    PlusWnd.LstBox_AddItem('MSNNameLBox', mword, mitems + 1);
}
 
function OnoptionsEvent_CtrlClicked(PlusWnd, ControlId) {
    if (ControlId == "BtnLoad") {
        loadItems(PlusWnd);
    }
    if (ControlId == "BtnSave") {
    }
    if (ControlId == "BtnAdd") {
        newProcess(PlusWnd);
    }
    if (ControlId == "BtnClose") {
        PlusWnd.Close(1)
    }
}


FIXED, i wasnt detecting PlusWnd.LstBox_ as it was loading at the same time as building XML, having it on individual load button works