powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Программа выполнила недопустимую операцию и будет закрыта
13 сообщений из 13, страница 1 из 1
Программа выполнила недопустимую операцию и будет закрыта
    #32308275
Alfa1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожайлуста. При запуске программы на выполнение пишет ошибка № 15 программа выполнила недопустимую операцию и будет закрыта. Когда команду убираю на открытие базы, проходит без ошибки дальше, но потом все равно на каком-то другом этапе снова на эту же ошибку выходит.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32308289
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой Fox?
Ошибка №15 Not a table.
Пытаешься открыть файл, который не является таблицей FoxPro.
Попробуй открыть таблицу в среде Fox'а.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32308296
Alfa1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Visual FoxPro 5.0. База действительно Dos. Но ведь когда в Foxе такие базы открываешь, он спрашивает какая кодировка и преобразует сам.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32308351
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Just a guess :)

Старые версии VFP очень плохо реагировали, если имя диска написано кириллицей.
Т.е. если вместо латинской C:\ (це) написать русскую С:\ (эс)

P.S. Это отностится только к имени диска. Названия директрий можно писать
любыми буквами. В 7-ке этот глюк исправили.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32308745
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По поводу кодировки - она здесь ни причем, преобразования не происходит, только выставляется признак кодовой страницы в заголовке файла.
Таблица FPD должна открываться в VFP.
Таблица точно открывается в среде (проверь в VFP и в FPD). Проверь пути к таблице (правильно ли указаны).
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32309735
Alfa1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пути все проверила - все то же. Дело в том, что база, на которой ошибка эта появляется - уже четвертая, три предыдущие открываются без проблем. К тому же она достаточно большая по сравнению с предыдущими открывающими ся базами. Возможно, что-то с памятью стало. Как это проверить?
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32309791
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит большая?
У меня открываются таблицы по 300 Мб и все Ok.
Вопрос: таблица открывается в среде VFP?
Приведи пример кода на открытие.
Попробуй упаковать таблицу, сделай ReIndex.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32309823
Alfa1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PRIVATE TT,SS,DD,CH,C,B,N,F,ii,ot,OK,S,K,KF,N1,N2,N3,n4,n5,n6,SN1,SN2,SN3,sn4,sn5,sn6,CHS
declare aa[12],as[12],sss[100]
public mm,CE
set console off
set device to print
set print on
set printer to MISTAKE
set printer to ndfl_1

*set device to screen

men2=1
select 1
use srab
index on val(tabn) to sr1
select 3
use doxod
index on val(tabn) to dox6
select 2
use dox_mes
set relation to val(tabn) into 1
index on str(val(tabn),4)+str(mes,2) to dox5
select 5
use base_

Если закомментировать последнюю строку, то проходит дальше - иначе "Программа выполнила недопустимую операцию". База в VFP открывается и просматривается. Раньше все работало нормально. Что же случилось?
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32309834
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если таблица открывается в среде, то открой ее, пересоздай (как угодно: select * from base_, create table и append from).
Создай заново индексы и попробуй после этого с ней работать.
Естественно, если надо работать с ней в Fox под Dos все это надо проделать в FPD.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32310457
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to bdv9
>Попробуй упаковать таблицу, сделай ReIndex.
Pack и reindex делаются на уже открытой таблице, человек же говорит, что таблица не открывается ! Fox for DOS здесь ни причем, VisualFox открывает DOS-ские dbf-ы без проблем (единственно, если не совпадает кодовая страница, русские буквы могут отображаться крокозябриками). Если этот файл не открывается из-под среды (VFP), то значит он не откроется и из-под FPD. 99% - что данная таблица просто поломалась, например: "сбился" счетчик числа записей в заголовке таблицы и т.п. Если из-под среды он открывается нормально, но ругается в программе, то единственное, что могу предположить : у там есть 2 файла base_.dbf , один из них - нормальный, его ты открываешь из-под среды, а второй - какой-то "левый", к нему пытается обратиться программа.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32310609
bdv9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 andrew_Pr
Все что ты написал насчет Pack и ReIndex я знаю.
А вот того, что таблица не открывается в среде Fox никто не говорил (более того даже наоборот).
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32310793
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to bdv9
виноват, не внимательно читал, беру свои слова обратно.
Кстати, был у меня с свое время похожий глюк. Правда на оборот, fox слетал, когда я открывал файл из-под среды, через OpenFileDialog, через Use открывался без проблем. И эта ошибка не была связана с каким-то конкретным файлом, а возникала от случая к случаю. Вылечилась то ли после сервиспака, то ли вообще после апгрейда компьютера.
...
Рейтинг: 0 / 0
Программа выполнила недопустимую операцию и будет закрыта
    #32311208
Yura .
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я как-то столкнулся с ошибкой 15, давно, правда, так я сразу вставил блок в обработчик. поскольку в тот случай таблица фактически была пустая, я просто открыл файл на низком уровне и обнулил счетчик числа записей, после чего таблица прекрасно открылась камандой USE. После этого я поставил эксперимент, что будет, если я в HEX-редакторе увеличу или уменьшу количество объявленных записей. Эксперимент удался, пробовал в среде FPD26. До сих пор проверка счетчика записей у меня стоит при каждом открытии таблиц.

И еще маленькое замечание по приведенному выше тексту
1. Я давно и навсегда отошел от того, что таблицы открываются где попало. Все открытия таблиц сведены в единую функцию, которая и отвечает за их открытие.
2. Я не приветствую привязку открытых таблиц к номерам зон. Перед открытием у меня стоит SELECT 0 всегда.
3. Никогда не открываю таблицы простейшей комбинацией USE Table
Обязательно указываю полное выражение
USE &cTable ALIAS &cAlias INDEX &cIndex SHARED (ну или EXCLUSIVE, но указываю обязательно) cTable - Переменная, содержащая обязательно полный путь к базе, всегда именно полный, а не просто имя таблицы. cAlias - имя открываемого алиаса и cIndex - полное имя индексного файла, если он есть.

Функция вызывается очень просто: cAnswer = OpenDbf (cAlias, cKey, mKey)
Что это означает:
Фактически везде я делаю сознательный акцент на то, что открывается не таблица, сама как таковая, а открывается алиас, при этом имя таблицы и имя алиаса редко, но может не совпадать.
cAnswer - содержит результат открытия - циферку, но в символьном виде '-1' - ошибка '1' - алиас был открыт ранее '2' - таблица открыта EXCLUSIVE '3' - таблица открыта SHARED.
cAlias - Имя открываемого алиаса
cKey - Переменная, содержащая способ открытия, может отсутствовать. По началу это было только одно из двух Exclusive или Shared, сейчас функция поумнела, и этих слов у меня больше.
mKey - дополнительный параметр, используется редко и обычно означает за какой год открыть таблицу.

Пример открытия 1, простейший:
If VAl ( OpenDbf (cAlias) ) < 1
RETURN '-1; Ошибка открытия '+ cAlias
EndIf
Собственно если таблица не открыта, то и продолжать не стоит.

Пример открытия 2 - открытие нескольких таблиц:
nKey = 0
DO CASE
CASE VAl ( OpenDbf (cAlias1) ) < 1 .or. !USED(cAlias1)
CASE VAl ( OpenDbf (cAlias2) ) < 1 .or. !USED(cAlias2)
CASE VAl ( OpenDbf (cAlias3) ) < 1 .or. !USED(cAlias3)
CASE .T.
nKey = 1
ENDCASE
IF nKey < 1
* Закрыть открытые таблицы, для чего тоже есть отдельная функция:
= DEUSE(cAlias1) + DEUSE(cAlias2) + DEUSE(cAlias3)
RETURN '-1; Ошибка открытия '+ cAlias1 +' '+ cAlias2 +' '+ cAlias3
ENDIF

Что касается полного пути, то эта функция сама знает где его брать, и собственно говоря надо сосредотачиваться на написании самой функции, а не пытаться вспоминать, где эти пути находятся, и если не указан способ открытия, функция сама знает, что подставлять по умолчанию. Там-же подключается и собственный обработчик ошибок, проверка на наличие, и если нет, но нужен FPT-файл, создается, и если нет, но нужен индекс , создается, и если нет самой таблицы, тоже создается, если не проставлена кодовая страница, проставляется, проверка, не открыт-ли файл другой программой, соответствует-ли структура таблицы текущей реализации программы, если нет - происходит конвертация, и т.д. Собственно говоря внештатные ситуации сейчас возникают редко, но если возникают, то вплоть до того, пока я ее не отработаю, все остальные дела откладываю в сторону. Вообще-то менеджер базы банных это большой разговор.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Программа выполнила недопустимую операцию и будет закрыта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]