:: Visual Foxpro, Foxpro for DOS
Ошибка на функции STRTOFIE()
lili
Автор

Сообщений: 436
Откуда: Сыктывкар
Дата регистрации: 07.11.2005
Приветствую всех!
В БД на СКЛ-сервере хранятся файлы в таблице в поле типа varbinary(max).
Вытаскиваю файл через Курсор-адаптер в поле типа Blob.
Затем STRTOFILE(...) - и файл сформирован.
До сих пор эта схема работала, но сегодня на STRTOFILE вышла ошибка String is too long to fit. Длина поля и правда не маленькая - 30М. Но я нигде не нашла про какие-либо ограничения. Что не так?
Ratings: 0 negative/0 positive
Re: Ошибка на функции STRTOFIE()
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Про ограничения в Хелпе нет ничего, но ошибка возникает периодически, помню такое было. Насколько помню, напрямую связано с объемом выделенной памяти для приложения системой.


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Ошибка на функции STRTOFIE()
lili
Автор

Сообщений: 436
Откуда: Сыктывкар
Дата регистрации: 07.11.2005
и что, можно этот объем памяти как-то регулировать?



Исправлено 1 раз(а). Последнее : lili, 19.07.18 15:25
Ratings: 0 negative/0 positive
Re: Ошибка на функции STRTOFIE()
akvvohinc

Сообщений: 4219
Откуда: Москва
Дата регистрации: 11.11.2008
Ограничения на выражения со строками есть, например, такие:

Limited by available memory
Maximum # of characters per character string or memory variable = 16,777,184
Maximum # of characters per command line = 8,192
Maximum # of characters per macro substituted line = 8,192
Maximum length of a string literal = 255

А что у вас написано буквально в качестве первого параметра? Имя поля?

Тогда наиболее вероятно, что ограничивает "available memory".
Ratings: 0 negative/0 positive
Re: Ошибка на функции STRTOFIE()
AndyNigmatec

Сообщений: 1573
Откуда: Волгоград
Дата регистрации: 28.06.2015
было как-то обсуждение forum.foxclub.ru
Ratings: 0 negative/0 positive
Re: Ошибка на функции STRTOFIE()
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
lili
на STRTOFILE вышла ошибка String is too long to fit. Длина поля и правда не маленькая - 30М. Но я нигде не нашла про какие-либо ограничения. Что не так?
Help
String is too long to fit (Error 1903)
The allowable string length was exceeded. For more information, see Visual FoxPro System Capacities.

Help
Visual FoxPro System Capacities
...
Maximum # of characters per character string or memory variable. 16,777,184
...
Предельный документированный размер строковой переменной (и "строкового значения", хотя это не совсем точно передаёт суть дела) чуть менее 16Мб.

Иногда (в частности при чтении файлов с диска при помощи FILETOSTR) в переменной можно получить и более длинные строковые значения - правда при работе с такой переменной будут ломаться многие строковые функции - именно с ошибкой "String is too long to fit (Error 1903)".
Очевидно при попытке использовать STRTOFILE для мемо/блоб-поля как раз и происходит такая ситуация.

Для выгрузки данных из мемо-полей в файлы на диске существует специальная команда COPY MEMO. Хотя в хелпе это и не отмечено, но она же работает и для блоб-полей, равно как и APPEND MEMO - что позволяет загрузить в мемо/блоб-поле файлы которые просто не поместятся в памяти, и вызовут ошибку "There is not enough memory to complete this operation (Error 43)" если попытаться записать их, к примеру, через REPLACE memofld WITH FILETOSTR("big_movie.avi"). Обычно при свободной памяти фокс справляется через FILETOSTR с файлами размером в несколько сот мегабайт. APPEND MEMO справится с файлом размером чуть менее 2Гб (собственно говоря это предел для размера fpt файла, а не для конкретно этой команды) для новой/пустой таблицы/курсора.


------------------
WBR, Igor
Ratings: 0 negative/3 positive
Re: Ошибка на функции STRTOFIE()
lili
Автор

Сообщений: 436
Откуда: Сыктывкар
Дата регистрации: 07.11.2005
Igor Korolyov, спасибо за ценную (как всегда) информацию. Все получилось.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 20 (Гостей: 20)

© 2000-2024 Fox Club 
Яндекс.Метрика