Forum Discussion

Morgan's avatar
Morgan
Frequent Contributor
13 years ago

Delphi Split function

I am trying to convert some vbscript to delphi and am having trouble with the Split function (error says Unknown name : Split)



  //The windows are all named the same. Find the one I want.

  sPropNames := 'WndCaption,WndClass';

  aPropNames := Split(sPropNames, ',');

  sPropValues := 'XXXXXXXXXXXXXX,#32770';

  aPropValues := Split(sPropValues, ',');  

  aForms := Sys.Process('ODBCAD32').FindAll(aPropNames, aPropValues);





What is the correct way to do this in Delphi?



Thanks!

Morgan
  • Hi Morgan,



    I'm afraid that you'll need a custom Split() function. Something like this (of top of my head, untested, based on 'DelphiScript - Working With Strings' help topic):



    function DelphiSplit(strString : string; strSeparator : string = ',');

    var prevSep;

    var iLen, i;

    var arr

    begin

      // Assign list separator to space character

      prevSep := aqString.ListSeparator;



      try

        aqString.ListSeparator := strSeparator;



        iLen = aqString.GetListLength(strString);

        arr = CreateVariantArray(0, iLen - 1);

        for i := 0 to iLen - 1 do

          arr := aqString.GetListItem(strString, i));



        result := arr;

      finally

        // Restore previous separator

        aqString.ListSeparator := prevSep;

      end;

    end;
  • AlexKaras's avatar
    AlexKaras
    Champion Level 3
    Hi Morgan,



    I'm afraid that you'll need a custom Split() function. Something like this (of top of my head, untested, based on 'DelphiScript - Working With Strings' help topic):



    function DelphiSplit(strString : string; strSeparator : string = ',');

    var prevSep;

    var iLen, i;

    var arr

    begin

      // Assign list separator to space character

      prevSep := aqString.ListSeparator;



      try

        aqString.ListSeparator := strSeparator;



        iLen = aqString.GetListLength(strString);

        arr = CreateVariantArray(0, iLen - 1);

        for i := 0 to iLen - 1 do

          arr := aqString.GetListItem(strString, i));



        result := arr;

      finally

        // Restore previous separator

        aqString.ListSeparator := prevSep;

      end;

    end;