Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual FoxPro
Войти
Регистрация
Восстановить пароль
 
Буян
212 / 0 / 1
Регистрация: 16.01.2012
Сообщений: 40
#1

Переделать символьную переменную в логическу - FoxPro

27.12.2012, 01:45. Просмотров 678. Ответов 5
Метки нет (Все метки)

Здрав-те!
Имеется прога которая заполняет БД
Кликните здесь для просмотра всего текста
use List.dbf
clear
otvet='Y'
Do while otvet='Y' OR otvet='y'
APPEND BLANK
@ 1,1 to 17,55
@ 2,3 say 'Таблица List.dbf'
@ 7,13 say 'Поле Fam'
@ 7,35 get Fam
@ 9,13 say 'Поле Gr'
@ 9,35 get Gr PICTURE '99999'
@ 11,13 say 'Поле Subgr'
@ 11,35 get Subgr PICTURE '99999'
@ 13,13 say 'Поле Grade'
@ 13,35 get Grade
@ 15,13 say 'Поле Creditno'
@ 15,35 get Creditno
Read
@ 18,11 say 'Продолжить ввод данных (Y/N)? '
@ 18,45 get otvet
read
enddo
clear all
l


Тут переменная otv='Y' символьного типа, но препод попросил сделать его логическим, говорит зачем тебе символьный тип, если тебе надо всего 2 значения(Да или Нет) Как там нужно изменить цикл?
Пробовал вот так, но прога не выходила из цикла
Кликните здесь для просмотра всего текста
use List.dbf
clear
otvet='L'
Do while .T.
APPEND BLANK
@ 1,1 to 17,55
@ 2,3 say 'Таблица List.dbf'
@ 7,13 say 'Поле Fam'
@ 7,35 get Fam
@ 9,13 say 'Поле Gr'
@ 9,35 get Gr PICTURE '99999'
@ 11,13 say 'Поле Subgr'
@ 11,35 get Subgr PICTURE '99999'
@ 13,13 say 'Поле Grade'
@ 13,35 get Grade
@ 15,13 say 'Поле Creditno'
@ 15,35 get Creditno
Read
@ 18,11 say 'Продолжить ввод данных (Y/N)? '
@ 18,45 get otvet
read
enddo
clear all

Я так думаю что бред написал
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2012, 01:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Переделать символьную переменную в логическу (FoxPro):

преобразуйте числовую переменную в символьную
преобразуйте числовую переменную в символьную

Преобразование символьного массива в символьную переменную
Ввести слово «информа-тика» как символьный массив. Представить его как...

Считать символ с клавиатуры в символьную переменную
Помогите считать символ с клавиатуры в символьную переменную. Что-нибудь...

Как вставить символьную переменную внутри функции
помогите я новичок в c++. Я не понимаю как вставлять в функцию символьную...

Каким образом записать слеш в символьную переменную
дело в том что таким '\' образом не катит компилятор ругается

Объявить строковую переменную с русскими буквами как символьную
Можно-ли Объявить переменную с русскими буквами и применить как символьную???...

5
tmpnik1
31 / 26 / 7
Регистрация: 28.02.2011
Сообщений: 1,113
27.12.2012, 13:33 #2
otvet='Y'
Do while .T.
@ 18,45 get otvet
otvet=iif(otvet='Y' OR otvet='y',.T.,.F.)
enddo
Вообщето вариантов много, фиг его знает, какая ещё мысль посетит препода..:-)
1
Буян
212 / 0 / 1
Регистрация: 16.01.2012
Сообщений: 40
27.12.2012, 14:46  [ТС] #3
Сделал вот так, но как то неправильно работает: сначала в первый раз ввожу данные, и если на сообщение "продолжить ввод данных?" ввести любой символ то цикл начинается заново, потом во 2 раз на сообщение"продолжить ввод данных?" если ввести любую букву выходит ошибка "operator/operand type mismatch"
Кликните здесь для просмотра всего текста
use List.dbf
clear
otvet='L'
Do while .T.
APPEND BLANK
@ 1,1 to 17,55
@ 2,3 say 'Òàáëèöà List.dbf'
@ 7,13 say 'Ïîëå Fam'
@ 7,35 get Fam
@ 9,13 say 'Ïîëå Gr'
@ 9,35 get Gr PICTURE '99999'
@ 11,13 say 'Ïîëå Subgr'
@ 11,35 get Subgr PICTURE '99999'
@ 13,13 say 'Ïîëå Grade'
@ 13,35 get Grade
@ 15,13 say 'Ïîëå Creditno'
@ 15,35 get Creditno
Read
@ 18,11 say 'Ïðîäîëæèòü ââîä äàííûõ (Y/N)? '
@ 18,45 get otvet
otvet=iif(otvet='Y' OR otvet='y',.T.,.F.)
read
enddo
clear all
0
tmpnik1
31 / 26 / 7
Регистрация: 28.02.2011
Сообщений: 1,113
27.12.2012, 17:03 #4
Ну я просто идею дал, у меня на экране не было нормального codepage, к тому же я плохо вижу..:-), это фича такая у преподов, чем больше ошибок разбираешь, тем лучше предмет знаешь...:-), естественно ты нажимаешь "Y" otvetу тебя .T. и цикл продолжается пока не будет False, поменяй просто в условие местами True на False, второе если ты ввёл значение первый раз, то переменная из символьной (otvet='Y') превратилась в логтческую(otvet=.T.), следовательно надо опять в начале цикла сделать её символьной.... :-)
Do while .T.
otvet='Y'
Извини, торопился, бывает...
0
Буян
212 / 0 / 1
Регистрация: 16.01.2012
Сообщений: 40
27.12.2012, 18:35  [ТС] #5
Да блин, вот не выходит из цикла и все, я вставил там otvet='Y' но никак. Может цикл неправильно написан, ведь если условие выполняется, то цикл вновь и вновь работает, но если условие не выполняется что же она делает? Может надо пожсказать ему что надо выйти из цикла и закрыться.
И зачем нужно переменую в символьную переделывать? Ведь мне и нужно чтобы она была логической.
0
tmpnik1
31 / 26 / 7
Регистрация: 28.02.2011
Сообщений: 1,113
28.12.2012, 08:27 #6
Кликните здесь для просмотра всего текста

use List.dbf
clear
otvet=.T.
Do while otvet
otvet='Y'
APPEND BLANK
@ 1,1 to 17,55
@ 2,3 say 'Таблица List.dbf'
@ 7,13 say 'Поле Fam'
@ 7,35 get Fam
@ 9,13 say 'Поле Gr'
@ 9,35 get Gr PICTURE '99999'
@ 11,13 say 'Поле Subgr'
@ 11,35 get Subgr PICTURE '99999'
@ 13,13 say 'Поле Grade'
@ 13,35 get Grade
@ 15,13 say 'Поле Creditno'
@ 15,35 get Creditno
Read
@ 18,11 say 'Продолжить ввод данных (Y/N)? '
@ 18,45 get otvet
read
otvet=iif(otvet='Y' OR otvet='y',.T.,.Y.)
enddo
clear all

>И зачем нужно переменую в символьную переделывать
Чтоб при очередном проходе цикла, при ответе "N"? у тебя в @ 18,45 get otvet, была символьная переменная, иначе не соответствие типов...
или вот вариант...
Кликните здесь для просмотра всего текста
use List.dbf
clear
otvet1='Y'
otvet=.T.
Do while otvet
APPEND BLANK
@ 1,1 to 17,55
@ 2,3 say 'Таблица List.dbf'
@ 7,13 say 'Поле Fam'
@ 7,35 get Fam
@ 9,13 say 'Поле Gr'
@ 9,35 get Gr PICTURE '99999'
@ 11,13 say 'Поле Subgr'
@ 11,35 get Subgr PICTURE '99999'
@ 13,13 say 'Поле Grade'
@ 13,35 get Grade
@ 15,13 say 'Поле Creditno'
@ 15,35 get Creditno
Read
@ 18,11 say 'Продолжить ввод данных (Y/N)? '
@ 18,45 get otvet1
read
otvet=iif(otvet1='Y' OR otvet1='y',.T.,.Y.)
enddo
clear all
0
28.12.2012, 08:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2012, 08:27
Привет! Вот еще темы с решениями:

Ввести символьную переменную. Определить количество символов, совпадающих с ее начальной буквой
ввести символьную переменную. Определить количество символов, совпадающих с ее...

Создать консольное приложение. Вывести на экран строку, содержащую целую, символьную и вещественную переменную
помогите плз с кодом

Создать консольное приложение, вывести в файл строку, содержащую целую, символьную, вещественную переменную
я нуб, помогите с кодом

Записать день в переменную d,месяц в переменную m, год в переменную y
Как можно получить системную дату? Мне надо записать день в переменную d,месяц...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru