Абзац ...

  • Автор темы Автор темы mihailo-v
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

mihailo-v

Участник
Топикстартер
Сообщения
65
Реакции
0
Приветствую !

В очередно й раз при написсании скрипта меня жестоко тупит по такому вопросу. Я мляха муха, второй день уже ищу как мне тупо добавить новый абзац к имеющимся во фрейме (здесь тоже искал). Или может как-то добавить в конце текущего абзаца волшебный символ какой-нибудь (чтобы новый абзац появился).
Пишу на JS для CS2.

Еще маленький вопрос. Я задаю список фалов из некой папки
Код:
var myTxtList = myTxtFolder.getFiles();
При присвоении строке Somestring = myTxtList[0] дает полный путь. Но проблема в том, что в myTxtList (что по идее есть массив) объекты не пойми как и покакому принципу отсортированы. Короче впрос такой: как по порядку обращятся к файлам.

С уважением, Михаил
 
Ответ: Абзац ...

.insertionPoints[-1].contents="\r";

по порядку обращаться – в цикле. Либо делать свою сортировку (по имени, времени и т.д.). А какой порядок нужен и зачем?
 
Ответ: Абзац ...

Steve сказал(а):
.insertionPoints[-1].contents="\r";
А где начало? Чьих будет insertionPoints?

по порядку обращаться – в цикле. Либо делать свою сортировку (по имени, времени и т.д.). А какой порядок нужен и зачем?
Офигительный ответ:)
Зачем это нужно: в цикле я вызываю myFile.open("r") что должно обеспечить считывание из папки myFolder _всех файлов в порядке возрастания_. При этом, повторюсь, myFolder.getFiles(), наверное то что мне нужно, но он дает _неупорядоченный_ массыв типа File. Применить к нему sort() не удалось.

Михаил.
 
Ответ: Абзац ...

mihailo-v сказал(а):
А где начало? Чьих будет insertionPoints?
А это зависит от ситуации. Можно посмотреть в Scripting Reference, что такое insertionPoints.

mihailo-v сказал(а):
Офигительный ответ:)
Зачем это нужно: в цикле я вызываю myFile.open("r") что должно обеспечить считывание из папки myFolder _всех файлов в порядке возрастания_.
Михаил.
Каков вопрос, таков ответ.
В порядке возрастания чего (name, size, time)? Если будут обрабатываться все файлы из папки, то зачем делать добавочную сортировку?
И как проверяли, что sort() не работает?
 
Ответ: Абзац ...

Steve сказал(а):
Каков вопрос, таков ответ.
В порядке возрастания чего (name, size, time)?
И как проверяли, что sort() не работает?

Cортированы по ИМЕНИ.
Надо втавить построчно в фрейм содержимое файлов :
1. первая строка 1-го файла.
2. вторая строка 1-го файла.

..
.. первая строка 2-го файла.
.. вторая строка 2-го файла.

.. последняя строка последнего файла.

Вроде все разжевал.
 
Ответ: Абзац ...

sort Method
See Also
Array Object Methods

Applies To: Array Object
Requirements
Version 2
Returns an Array object with the elements sorted.

arrayobj.sort(sortFunction)
Arguments
arrayObj
Required. Any Array object.
sortFunction
Optional. The name of the function used to determine the order of the elements. If omitted, the elements are sorted in ascending, ASCII character order.
Remarks
The sort method sorts the Array object in place; no new Array object is created during execution.

If you supply a function in the sortFunction argument, it must return one of the following values:

A negative value if the first argument passed is less than the second argument.
Zero if the two arguments are equivalent.
A positive value if the first argument is greater than the second argument.
Example
The following example illustrates the use of the sort method.

function SortDemo(){
var a, l; //Declare variables.
a = new Array("X" ,"y" ,"d", "Z", "v","m","r");
l = a.sort(); //Sort the array.
return(l); //Return sorted array.
}
 
Ответ: Абзац ...

Вот скрипт, который я пишу:

Код:
with (app){
var myDocument = activeDocument;
var mySelection = activeDocument.selection[0];
var mySpreadNum = mySelection.parent.parent.index;
var myPage = myDocument.pages.item(myPageNum);
var myText = new Array();
var myText2 = new Array();
var myTxtFolder = new Folder("/c/mish/script_debug/text2");
var myTifFolder = new Folder("/c/mish/script_debug/tiff2");
var myTxtList = myTxtFolder.getFiles();
var mySortTxtList = myTxtList.sort;// <-- Пытаюсь сортировать
var myTifList = myTifFolder.getFiles();
var myFN = myTxtList.length;
var myFC = 0;

for(var p = 2; p < 3; p++){
  for(var i = 0; i < 2; i++){//i<mRow
    for (var j = 0; j < mCol; j++){
      n = i*mCol + j;
      mySelection.duplicate([37*j, i*45]);
      myPage.textFrames.item(0).contents = mCol*mRow - 1 - n + "\r"+myFC;
      ++myFC;
    }
  }

++myPageNum;

myPage.textFrames.lastItem().move(myDocument.pages.item(myPageNum),undefined);

myText = readFile(myTxtList[myFC]);
//myText2 = readFile(mySortTxtList[myFC]);
myPage.textFrames.lastItem().contents = myPageNum + "\r" + myText[0] + "\r" +myText[1];
myPage = myDocument.pages.item(myPageNum);
myPage.textFrames.lastItem().move(undefined, [9+myD*7, 18]);
} 

function readFile(myFile) { //Вставка из файла в текстовый блок 
    var myResult = myFile.open("r");
    if (!myResult) {
        alert(langNotOpenRead);
        exit();
    }
    var myArray = new Array();
    var myCounter = 0;
    while (!myFile.eof) {
        myArray[myCounter] = myFile.readln();
        myCounter++;
    }
        myFile.close();
  return myArray;
}

}

Это пока даже без цикла - просто хочу считать файл, который будет первым в папке (только не спрашивайте опять что значит первым)
А вот эта строка дает ошибку:
Код:
//myText2 = readFile(mySortTxtList[0]);
Точнее, mySortTxtList[0] возвращет undefined.

Я подозреваю, что проблема в недопустимом для sort типе данных в массиве. Так вот, посоветуйте как можно сделать скрипт попроще.

С уважением, Михаил
 
Ответ: Абзац ...

а myTxtList[0] чему равно и что в Data Browser?
можно еще проверку сделать myTxtFolder.exists, может такой папки и нет.
 
Ответ: Абзац ...

Steve сказал(а):
а myTxtList[0] чему равно и что в Data Browser?

myTxtList[0] возвращает ссылку на файл, который меньше всех по размеру.

Steve сказал(а):
можно еще проверку сделать myTxtFolder.exists, может такой папки и нет.

Скрипт рабочий! Из файла читает, но не из того, который мне надо. Можете сами проверить.
 
Ответ: Абзац ...

проверить не получится,т.к. это часть скрипта.
А трейсить не получается? выполнять каждый шаг (или не каждый) и смотреть чему равно myFC и myTxtList[myFC].
Может тут ошибка, myFC внутри цикла:

Код:
for (var j = 0; j < mCol; j++){
..
[B]++myFC;[/B]
..
}
а потом myText = readFile(myTxtList[myFC]);

И почему нельзя использовать InsertionPoint.place()?
 
Ответ: Абзац ...

Спасибо конечно, думаю сам уже скоро решу проблему. Если кому интересно, могу выложить скрипт, когда закончу.
На самом деле он не просто импортит текст, а должен выполнять еще ряд проверок над считанной информацией, а потом уже применять стили +вставлять в этот текст картинку. А поскольку файлы небольшие, я запихиваю текст из файла построчно в массив, чтобы легче было сравнивать строки и т.п.
 
Статус
Закрыто для дальнейших ответов.