|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Spreadsheet Sections
The file parser outputs content (data or text) for cells in a spreadsheet by using the SOPutDataCell and SOPutTextCell functions. Before outputting cell data, the file parser must get the range of columns to be output by using the SOGetInfo function with the SOINFO_COLUMNRANGE value. When SOGetInfo returns, the low-order word of its pInfo parameter identifies the first column of data to generate output for, and the high-order word identifies the last column. The file parser should only call SOPutDataCell or SOPutTextCell for cells within the range indicated by a call to SOGetInfo. When there is no more data within a range of columns, the file parser must call the SOPutBreak function with either the SO_EOFBREAK or SO_SECTIONBREAK value, whichever applies. This must be done for each range of columns in the document.
For example, if the first column is 10 and the last column is 19, the filter reads the file from its current position, but it only calls SOPutDataCell or SOPutTextCell for cells that belong in columns 10 through column 19, inclusively. (Column numbers are zero based.) The parser skips over cells that belong in columns outside of this range. The filter must produce cells for all columns in the range, filling in with empty cells, if necessary. As before, the filter continues until SOPutBreak returns the SO_STOP value.
In general, the file parser should carry out the following steps:
1. Determine the desired range of columns. 2. Determine the next cell available from the input file. 3. If the cell is not in the given range of columns, jump to step 2. 4. If the cell is not empty, call SOPutDataCell or SOPutTextCell with the current data. Otherwise, call SOPutDataCell for a cell of the SO_CELLEMPTY type. 5. Update local variables, such as row and column numbers. 6. Call SOPutBreak with the SO_CELLBREAK value.
7. If SOPutBreak returns the SO_STOP value, return from the VwStreamReadFunc function. 8. If at the beginning of the next section, call SOPutBreak with the SO_SECTIONBREAK value and return. 9. If at the end of the file, call SOPutBreak with the SO_EOFBREAK value and return. 10. Repeat steps 2 through 10.
When the chunker saves local data for various seek positions in a document, it does so within SOPutBreak, when the break is of the SO_CELLBREAK type. Thus, when a file parser has its local data restored for a random seek position, the data will reflect the state of the file parser during its call to SOPutBreak for the last cell of the previous chunk in the current range of cells. Any tracking done by the parser, such as the current row number, should be updated before SOPutBreak is called for each cell.
Every horizontal range of columns, specified by dwExtraData in each call to your VwStreamReadFunc function, must eventually be terminated by a call to SOPutBreak with SO_EOFBREAK or SO_SECTIONBREAK value, whichever is applicable. The type of break depends on the input file. A file parser must not put a section break at the end of the file, and an end-of-file (EOF) break, of course, cannot occur anywhere but at the actual end of the file. For example, if the input document contains a single spreadsheet that is 30 columns wide, the display engine can call the parser with three different ranges of columns: 0 to 11, 12 to 23, and 24 to 29. The file parser calls SOPutBreak with an EOF break three times, once for each time it reaches the end of the file while processing a given range.
When calling SOPutBreak with a section break, the file parser must be sure that the seek position is at the beginning of the next section ѕ that is, the file position where the file parser needs to be when VwStreamSectionFunc is next called. Any one of the calls to SOPutBreak for a section break may be the one that sets the seek position for the top of the next section.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Секции Электронной таблицы
Файловый синтаксический анализатор выполняет содержимое (данные или текст) для ячеек в электронной таблице используя SOPutDataCell и функции SOPutTextCell. Перед outputting данными ячейки, файловый синтаксический анализатор должен получить дипазон столбцов, чтобы быть выходом используя функцию SOGetInfo с величиной SOINFO_COLUMNRANGE. Когда возврат SOGetInfo, младшее слово своего параметра pInfo идентифицирует первый столбец данных, чтобы генерировать выход для, и старшее слово идентифицирует последний столбец. Файловый синтаксический анализатор должен только призывать SOPutDataCell или SOPutTextCell к ячейкам в пределах дипазона указанного вызовом на SOGetInfo. Когда нет более данных в пределах дипазона столбцов, файловый синтаксический анализатор должен назвать функцию SOPutBreak с SO_EOFBREAK или величина SO_SECTIONBREAK, какой угодно относится. Это должно быть сделано для каждого дипазона столбцов в документе.
Например, если первый столбец - 10 и последний столбец - 19, фильтр читает файл из своей текущей позиции, но это только призывает SOPutDataCell или SOPutTextCell к ячейкам, которые принадлежат в столбцах 10 через столбец 19, включающо. (Номера Столбца являются нулем основанным.) Синтаксический анализатор пропускает ячейки, которые принадлежат в столбцах вне этого дипазона. Фильтр должен произвести ячейки для всех столбцов в дипазоне, заполняющем пустыми ячейками, если необходимо. Так как перед, фильтр остается пока SOPutBreak не возвращает величину SO_STOP.
В общих чертах, файловый синтаксический анализатор должен выполнить следующее шагов:
1. Определите желаемый дипазон столбцов. 2. Определите следующую ячейку доступную из входного файла. 3. Если ячейка - не в данном дипазоне столбцов, перескочите на шаг 2. 4. Если ячейка не пустая, назовите SOPutDataCell или SOPutTextCell с текущими данными. В противном случае, вызов SOPutDataCell для ячейки типа SO_CELLEMPTY. 5. Скорректируйте локальные переменные, как например, номера колонки и столбца. 6. Назовите SOPutBreak с величиной SO_CELLBREAK.
7. Если SOPutBreak возвращает величину SO_STOP, возвращайтесь из функции VwStreamReadFunc. 8. Если в начале следующей секции, назовите SOPutBreak с величиной SO_SECTIONBREAK и возврат. 9. Если в конце файла, назовите SOPutBreak с величиной SO_EOFBREAK и возврат. 10. Шаги Повторения 2 по 10.
Когда chunker сохраняет локальные данные для различных позиций поиска в документе, это делает так в пределах SOPutBreak, когда прерывание - типа SO_CELLBREAK. Таким образом, когда файловый синтаксический анализатор восстановил свои локальные данные для произвольной позиции поиска, данные отразит состояние файлового синтаксического анализатора в течение своего вызова на SOPutBreak для последней ячейки предшествующего куска в текущем дипазоне ячеек. Любой прослеживающий сделанный посредством синтаксического анализатора, как например, текущий номер колонки, должен быть скорректирован прежде, чем SOPutBreak будет назван к каждой ячейке.
Каждый горизонтальный дипазон столбцов, определенных dwExtraData на каждом вызове в вашу функцию VwStreamReadFunc, должен в конечном счете быть расторгнутым вызовом на SOPutBreak с SO_EOFBREAK или величина SO_SECTIONBREAK, какой угодно прилагаемая. Тип прерывания зависит от входного файла. Файловый синтаксический анализатор по-видимому не поместит прерывание секции в конце файла, и конец--файла (EOF) прерывания, конечно, не может произойти везде но в фактическом конце файла. Например, если входной документ содержит единственную электронную таблицу, которая - 30 столбцов широких, дисплейный двигатель может назвать синтаксический анализатор с тремя другими областями столбцов: 0 на 11, 12 на 23, и 24 на 29. Файловый синтаксический анализатор называет SOPutBreak с прерыванием EOF три раз (а), как только в течение всякий раз, когда, это достигает конец файла при обработке данного дипазона.
При вызове SOPutBreak с прерыванием секции, файловый синтаксический анализатор должен быть уверен, что позиция поиска - в начале следующей секции U то есть, файловая позиция где файловый синтаксический анализатор должен быть когда VwStreamSectionFunc затем назван. Любой из вызовов на SOPutBreak для прерывания секции могут быть то которые устанавливают позицию поиска для верха следующей секции.
|
|
|
|
| |