Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

JScript Error: Oczekiwano obiektu.



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> ECMAScript
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
VB6



Dołączył: 07 Wrz 2012
Posty: 56

PostWysłany: Czw Wrz 10, 2015 3:05 pm  OP    Temat postu: JScript Error: Oczekiwano obiektu. Odpowiedz z cytatem Pisownia

W tekst edytorze AkelPad mam problem z zamianą (przesuwaniem) całych linii.
Znalazłem skrypt MoveLinesUpDown_alt.js, który prawdopodobnie rozwiązałby ten problem.

Kod:
// Move up or down selected lines - 2010-07-28
// If there is no selection, it moves the current line.
// Moved lines, are selected in their entirety.
//
// Call("Scripts::Main", 1, "MoveLinesUpDown_alt.js", "-1") - move up
// Call("Scripts::Main", 1, "MoveLinesUpDown_alt.js", "1")  - move down
//
// Can assign shortcut keys, eg: Ctrl+Alt+Up, Ctrl+Alt+Down


var nMovDir;
if (WScript.Arguments.length)
   nMovDir = WScript.Arguments(0);
if (!((nMovDir == -1) || (nMovDir == 1)))
   WScript.Quit();

var hEditWnd = AkelPad.GetEditWnd();

SetRedraw(hEditWnd, false);


// SmartSel::NoSelEOL plugin
var pFuncEOL  = "SmartSel::NoSelEOL";
var bNoSelEOL = AkelPad.IsPluginRunning(pFuncEOL);
if (bNoSelEOL)
   AkelPad.Call(pFuncEOL);


// Word Wrap
var nWordWrap = AkelPad.SendMessage(hEditWnd, 3241 /*AEM_GETWORDWRAP*/, 0, 0);
if (nWordWrap > 0)
   AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);


var nBegSel   = AkelPad.GetSelStart();
var nEndSel   = AkelPad.GetSelEnd();
var nLine1    = AkelPad.SendMessage(hEditWnd, 1078 /*EM_EXLINEFROMCHAR*/, 0, nBegSel);
var nLine2    = AkelPad.SendMessage(hEditWnd, 1078 /*EM_EXLINEFROMCHAR*/, 0, nEndSel);
var nLastLine = AkelPad.SendMessage(hEditWnd, 1078 /*EM_EXLINEFROMCHAR*/, 0, -2);
var pEOL      = "\r";

var nBegLine1;
var nBegLine2;
var nLenLine2;
var nSel1;
var nSel2;
var pSelTxt;
var pTxt1;
var pTxt2;

if (((nMovDir == 1) && (nLine2 < nLastLine) || (nMovDir == -1) && (nLine1 > 0)) && !AkelPad.GetEditReadOnly(hEditWnd))
{
   nBegSel = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine1, 0);
   nEndSel = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine2, 0) + AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, nEndSel, 0);

   if (nMovDir == 1)
      ++ nLine2;
   else
      -- nLine1;

   nBegLine1 = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine1, 0);
   nBegLine2 = AkelPad.SendMessage(hEditWnd, 187 /*EM_LINEINDEX*/, nLine2, 0);
   nLenLine2 = AkelPad.SendMessage(hEditWnd, 193 /*EM_LINELENGTH*/, nBegLine2, 0);
   nSel1 = nBegLine1;
   nSel2 = nBegLine2 + nLenLine2;
   if (nLine2 < nLastLine)
      ++ nSel2;

   AkelPad.SetSel(nSel1, nSel2);
   pSelTxt = AkelPad.GetSelText(1 /*\r*/);

   if (nMovDir == 1)
   {
      if (nLine2 < nLastLine)
      {
         pTxt1 = pSelTxt.substr(0, pSelTxt.lastIndexOf(pEOL) - nLenLine2);
         pTxt2 = pSelTxt.substr(pTxt1.length);
      }
      else
      {
         pTxt1 = pSelTxt.substr(0, pSelTxt.lastIndexOf(pEOL));
         pTxt2 = pSelTxt.substr(pSelTxt.lastIndexOf(pEOL) + 1) + pEOL;
      }
      nBegSel += pTxt2.length;
      nEndSel += pTxt2.length;
   }
   else
   {
      if (nLine2 < nLastLine)
      {
         pTxt1 = pSelTxt.substr(0, pSelTxt.indexOf(pEOL) + 1);
         pTxt2 = pSelTxt.substr(pSelTxt.indexOf(pEOL) + 1);
         nBegSel -= pTxt1.length;
         nEndSel -= pTxt1.length;
      }
      else
      {
         pTxt1 = pSelTxt.substr(0, pSelTxt.indexOf(pEOL));
         pTxt2 = pSelTxt.substr(pSelTxt.indexOf(pEOL) + 1) + pEOL;
         nBegSel -= (pTxt1.length + 1);
         nEndSel -= (pTxt1.length + 1);
      }
   }

   AkelPad.ReplaceSel(pTxt2 + pTxt1);

   if (nMovDir == 1)
      AkelPad.SetSel(nBegSel, nEndSel);
   else
      AkelPad.SetSel(nEndSel, nBegSel);
}

if (nWordWrap > 0)
   AkelPad.Command(4209 /*IDM_VIEW_WORDWRAP*/);

if (bNoSelEOL)
   AkelPad.Call(pFuncEOL);

SetRedraw(hEditWnd, true);

function SetRedraw(hWnd, bRedraw)
{
   var oSys = AkelPad.SystemFunction();
   AkelPad.SendMessage(hWnd, 11 /*WM_SETREDRAW*/, bRedraw, 0);
   bRedraw && oSys.Call("user32::InvalidateRect", hWnd, 0, true);
}

________________________________________________________________________

Stworzyłem jeszcze jeden skrypt do uruchomienia powyższego:
Call("Scripts::Main", 1, "MoveLinesUpDown_alt.js", "-1")
po wywołaniu go w edytorze otrzymuję informację:

Script:
d:\WinCMD\AkelPad\AkelFiles\Plugs\Scripts\MoveLineUp2.js Linę: 1
Symbol: 1
Error: Oczekiwano obiektu.
Code: 800A138F
Source: Microsoft JScript - błąd czasu wykonywania

Nie znam się na skryptach java..
Chyba przed Call powinno coś być zadeklarowane czy jakiś Set.
Jak go uruchomić?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> ECMAScript Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.03814 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |