|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
Вот начал писать типа SET ALTERNATE TO "xxxx.txt" SET ALTERNATE ON <?xml version="1.0" encoding="windows-1251"?> Но получившийся файл не будет иметь такой кодировки(скорей всего 866) 1.Как проверить(какой функцией или утилитой) кодировку получившегося файла 2. как установить кодировку у получившегося файла 1251 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 11:51 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
Никак. В текстовом файле кодировка нигде не хранится. Разве что эвристический анализатор написать. Если нужна 866 то сначала конвертируй cpconvert() а потом пиши. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 11:58 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
нет нужна 1251, но как тогда например заходишь в FAR в редактор(F4), он показывает кодировку или DOS или WIN, по каким-то признакам он определяет кодировку... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:07 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
и ещё вопрос, почему то SET ALTERNATE ON добавляет пустую строчку вначале, какой опцией можно сделать, чтоб не добавлялась пустая строка... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:11 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1нет нужна 1251, но как тогда например заходишь в FAR в редактор(F4), он показывает кодировку или DOS или WIN, по каким-то признакам он определяет кодировку...Анализом некоторого количества первых символов текста. Еще раз - в текстовом файле нет указаний на кодировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:27 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1и ещё вопрос, почему то SET ALTERNATE ON добавляет пустую строчку вначале, какой опцией можно сделать, чтоб не добавлялась пустая строка...Потому, что так задумано. Не надо пользоваться давно устаревшими командами. Пользуйтесь TEXTMERGE, set text и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:29 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1нет нужна 1251, Тогда не надо никаких конвертаций, фокс изначально работает в 1251 и будет писать в 1251 q1w1e1но как тогда например заходишь в FAR в редактор(F4), он показывает кодировку или DOS или WIN, по каким-то признакам он определяет кодировку... Если заметил - то не всегда определяет и приходится нажимать F8 чтобы переключиться. Это и есть эвристический анализ: выделяем коды символов которые в одной кодировке - буквы, в другой кракозябры. Смотрим что встречается в файле и по наличию таких кодов делаем предположение в пользу одной из кодировок. q1w1e1и ещё вопрос, почему то SET ALTERNATE ON добавляет пустую строчку вначале, какой опцией можно сделать, чтоб не добавлялась пустая строка... Может уже пора забыть про это наследие FPD ? Можно сформировать все в переменной и потом записать в файл. Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:32 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
Функцией StrToFile() не пользовался(или польщовался, но по каким-то причинам она не устроила)... какого размера эта функция позволяет скопировать переменную в файл, если у меня 1000000 строк (каждый работник со своим стажем) сможет ли эта функция преобразовать такую переменную в файл... и ещё один вопрос... тут страховой номер как-то надо сделать по правилам, в dbf это число, и преобразовать надо в строку вида ххх-ххх-ххх хх, конечно можно преобразовать число в строку, потом порезать на кусочки и затем склеить... но может также отбросить это "наследие прошлого"... есть более удобоваримая функция?..:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:48 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1Функцией StrToFile() не пользовался(или польщовался, но по каким-то причинам она не устроила)... какого размера эта функция позволяет скопировать переменную в файл, если у меня 1000000 строк (каждый работник со своим стажем) сможет ли эта функция преобразовать такую переменную в файл...Неужели так трудно попробовать? Несколько мегабайт точно работают. В конце концов, предложенный мной вариант не зависит от размера конечного файла. и ещё один вопрос... тут страховой номер как-то надо сделать по правилам, в dbf это число, и преобразовать надо в строку вида ххх-ххх-ххх хх, конечно можно преобразовать число в строку, потом порезать на кусочки и затем склеить... но может также отбросить это "наследие прошлого"... есть более удобоваримая функция?..:-)Transform() покури. И заметь, все предложенное мной работало еще в FPD. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:55 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
Спасибо Сергей, правда в этой теме я не нашёл предложенного...:-) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 12:58 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1Спасибо Сергей, правда в этой теме я не нашёл предложенного...:-)Что не нашел? SET TEXT? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:00 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
делаю insurance= 84488132 ?TRANSFORM(insurance,"999-999-999"), получаю 84-488-132, а нужно 084-488-132, как надо TRANSFORM? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:10 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
на сайте http://www.foxclub.ru/rhproject/project/ set text не нашёл... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:12 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1Функцией StrToFile() не пользовался(или польщовался, но по каким-то причинам она не устроила)... какого размера эта функция позволяет скопировать переменную в файл, если у меня 1000000 строк (каждый работник со своим стажем) сможет ли эта функция преобразовать такую переменную в файл... Функция сможет, только формирование в переменной заметно тормозить может. Будет тормозить - частями писать Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
q1w1e1есть более удобоваримая функция?..:-) Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:17 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1делаю insurance= 84488132 ?TRANSFORM(insurance,"999-999-999"), получаю 84-488-132, а нужно 084-488-132, как надо TRANSFORM? Код: sql 1.
Лучше свою функцию напиши, т.к. под нестандартные задачи не всегда есть готовые решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:22 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
Dima T, спасибо, вот только с transform, надо чтоб ? transform(1234567890, '999-999-999 99') && Display 12-345-678-90, а надо 012-345-678-90 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:25 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1делаю insurance= 84488132 ?TRANSFORM(insurance,"999-999-999"), получаю 84-488-132, а нужно 084-488-132, как надо TRANSFORM? Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:26 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
Dima T, спасибо, вопросов пока больше нет... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 13:26 |
|
Как задать кодировку файла
|
|||
---|---|---|---|
#18+
q1w1e1на сайте http://www.foxclub.ru/rhproject/project/ set text не нашёл... А почему я нашел? Цитата из приведенной ссылки: Visual FoxPro 9.0 Руководство по языку Команда SET TEXTMERGE См.также Скрыть все Разрешает или запрещает вычисление значения полей, переменных, элементов массивов, функций и выражений, которые заключены в разделители, определяющие границы для слияния текста, а также определяет, куда направлять вывод результатов слияния текста. SET TEXTMERGE [ON | OFF] [TO [FileName] MEMVAR VarName [ADDITIVE]] [WINDOW WindowName] [SHOW | NOSHOW] Параметры ON Определяет, что поля, переменные, элементы массивов, функции и выражения, заключенные в разделители, задающие границы слияния текста вычисляются и выводятся, если они помещены в строках после символов \ или \\, либо в строках, находящихся между командами TEXT и ENDTEXT. Следующий короткий пример программы показывает, как содержимое переменной gcTodayDate и значения, возвращаемые функциями DATE( ) и TIME( ) вычисляются, когда командой SET TEXTMERGE задана установка ON. Переменная gcTodayDate, функции DATE( ) и TIME( ) вычисляются потому, что они заключены в разделители, задающие границы текстового слияния и команда SET TEXTMERGE задает установку ON. Скопировать код CLEAR SET TALK OFF STORE 'Сегодня: ' TO gcTodayDate SET TEXTMERGE ON \<<gcTodayDate>> \\<<DATE( )>> \Время: \\ <<TIME( )>> Здесь показан результат вывода при запуске программы 1 января 1998г: Скопировать код Сегодня: 01/01/98 Время: 10:55:19 OFF (По умолчанию) Определяет, что поля, переменные, элементы массивов, функции и выражения выводятся так, как они записаны вместе с окружающими их разделителями, задающими границы слияния текста. Отметьте разницу в выводе результатов по сравнению с предыдущим примером когда командой SET TEXTMERGE задана установка OFF: Скопировать код CLEAR SET TALK OFF STORE 'Сегодня: ' TO gcTodayDate SET TEXTMERGE OFF \<<gcTodayDate>> \\<<DATE( )>> \Время: \\ <<TIME( )>> Здесь показан результат вывода этой программы: Скопировать код <<gcTodayDate>><<DATE( )>> Время: <<TIME( )>> TO [ FileName] Определяет что вывод из строк, начинающихся символами \, \\ или находящихся между командами TEXT ... ENDTEXT направляется в текстовый файл. Помимо основного окна Visual FoxPro, куда текст по умолчанию направляется всегда, вы также можете направить вывод в текстовый файл, указав его имя в FileName. Если файл с указанным именем не существует, будет создан новый файл. Если файл с таким именем уже имеется и командой SET SAFETY задана установка ON, вы получите возможность перезаписать существующий файл. Текстовый файл открывается на низком уровне (low-level) и его дескриптор (handle) запоминается в системной переменной _TEXT. Вы можете закрыть файл, использовав команду SET TEXTMERGE TO без дополнительных аргументов. Если в системной переменной _TEXT ранее был запомнен дескриптор другого файла, этот файл будет закрыт. MEMVAR VarName Определяет имя переменной, в которую направляются результаты, получаемые при выводе посредством TEXTMERGE. Поскольку команда SET TEXTMERGE имеет глобальный диапазон действия и может распространяться на несколько процедур или методов, переменная, указанная в MEMVAR VarName может оказаться в некоторых из них недоступной. Но и в этом случае команда будет выполняться, ничего не направляя на вывод. Вы можете управлять видимостью MEMVAR VarName, объявляя переменную как PUBLIC или PRIVATE (а также LOCAL - прим. переводчика). Эта фраза может также приводить к рекурсии, которую вы можете предотвратить при помощи команды SET TEXTMERGE TO, как показано в в следующем примере: Скопировать код USE LABELS STORE "" to myVar, myVar2 SET TEXTMERGE ON TO MEMVAR myVar && Выполнение TEXTMERGE начинается со следующей строки \Hey Now \<<date()>> SCAN \ <<name>> ENDSCAN * Удалите комментарий со строки, содержащей SET TEXTMERGE TO предотвращая ошибку рекурсии * с переменными myVar и myVar2. * SET TEXTMERGE TO TEXT TO myVar2 <b> Здесь кое-что на HTML. </b> Это HTML <<date()>> ENDTEXT SET TEXTMERGE OFF USE CLEAR ? myVar && Результат TEXTMERGE помещен в переменные ? myVar2 ADDITIVE Определяет что вывод из строк, начинающихся символами \, \\ или находящихся между командами TEXT ... ENDTEXT добавляется к содержимому существующего файла или переменной памяти. Для дальнейшей информации по направлению вывода при слиянии текста см. _TEXT System Variable. WINDOW WindowName Определяет что вывод из строк, начинающихся символами \, \\ или находящихся между командами TEXT ... ENDTEXT направляется в определенное пользователем окно, а не в главное окно Visual FoxPro, как это принято по умолчанию. WindowName определяет имя окна, в которое направляется вывод. Окно должно быть создано командой DEFINE WINDOW перед тем, как в него будет направлен вывод. Окно обязательно должно быть активным или видимым. SHOW | NOSHOW (По умолчанию) SHOW делает видимым вывод результатов текстового слияния. NOSHOW подавляет вывод результатов. По умолчанию вывод, формируемый командами \, \\ и TEXT ... ENDTEXT посылается в главное окно Visual FoxPro или активное окно, определенное пользователем. Замечания Команды \, \\ и TEXT ... ENDTEXT используются для слияния текста с содержимым таблиц, переменных, элементов массивов, значений, возвращаемых функциями и выражений. Если поле, переменная, элемент массива, функция или выражение заключено в ограничители, определяющие текстовое слияние (по умолчанию << и >>), оно может быть вычислено и слито с текстом. Эта возможность позволяет вам создавать письма, программы и шаблоны для создания программ. Коменда SET TEXTMERGE определяет, как вычисляются поля, переменные, элементы массива, функции или выражения, заключенные в ограничители, определяющие текстовое слияние. Она также позволяет вам направлять вывод в главное окно Visual FoxPro, окно, определенное пользователем или в файл. Поля типа memo также могут служить источником для текстового слияния. Если поле memo содержит имена полей, переменных, элементов массива, функций или выражений, заключенных в ограничители, определяющие текстовое слияние, их значения вычисляются и результат сливается с содержимым поля типа memo. Само поле типа memo также должно быть заключено в ограничители, определяющие текстовое слияние. См.также Команды \ | \\ Системная переменная _PRETEXT Команда SET TEXTMERGE DELIMITERS Функция TEXTMERGE( ) Команда TEXT ... ENDTEXT Команды Справка по языку ... |
|||
:
Нравится:
Не нравится:
|
|||
09.04.2014, 14:34 |
|
|
start [/forum/topic.php?fid=41&gotonew=1&tid=1582683]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
8ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 323ms |
total: | 482ms |
0 / 0 |