Автор | Сообщение |
|
| |
Пост N: 1
Зарегистрирован: 07.02.12
|
|
Отправлено: 07.02.12 11:34. Заголовок: Изучаю Clipper
Доброго всем времени суток! Решил немного подучить Clipper. Это не для учёбы, не для работы. Так для себя. С удивлением обнаружил, что в сети нет нормальных учебников по Clipper. Есть Norton guides с описанием функций, но мне необходим имеено учебник с примерами и описанием происходящего. Для чайников. Что именно интересует: 1. Структура программы (если он есть, как в Паскале?) 2. Типы данных 3. Ввод-вывод 4. Операторы цикла, ветвления и т. д. 5. Желательны примеры работы с dbf-файлами. Открытие, выборка записей, изменение их, удаление, и т. д. Что сделал самостоятельно: Скачал Clipper 5.3. Установил его в DosBox. Создал программу hello.prg с содержимым: ? "Hello world" Скомпилировал его и слинковал blinker'ом. В результате всё работает. Мне бы двинуться дальше, но не могу - инфы для изучения нет!
|
|
|
Ответов - 80
, стр:
1
2
3
4
All
[только новые]
|
|
|
| |
Пост N: 2274
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.02.12 12:15. Заголовок: Держал в руках такой..
Держал в руках такой учебник очень давно (когда Clipper 5.01 покупали) Скана в сети не видел.........
|
|
|
|
| |
Пост N: 136
Зарегистрирован: 11.10.11
|
|
Отправлено: 07.02.12 12:24. Заголовок: У меня из книг по Cl..
У меня из книг по Clipper имелись и имеются следующие книги: 1. "Руководство по применению Cliipper 5.0 на ПЭВМ" под общей редакцией Барранова и Воробьева. Фактически . это перевод документации. 2. "CA-Clipper 5.2 и билиотека CA-Clipper TOOLS 3.0" Канатников А.Н., Ткачев С.Б. 3. "Clipper. Руководство по программированию. 3 издание, версия 5.01" Рик Спенс. Это единственная оригинаьная книга, которая не является простой компиляцией документации. Самое смешное, что я даже по памяти уже не помню, как выглядит оператор цикла в Clipper! Так как поглащен изцчением С++.
|
|
|
|
| |
Пост N: 2
Зарегистрирован: 07.02.12
|
|
Отправлено: 07.02.12 12:28. Заголовок: О! Спасибо за операт..
О! Спасибо за оперативность. Попробую Рика Спенса найти. Хоть фамилия с названием известны. Уже кое что.
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 07.02.12
|
|
Отправлено: 07.02.12 14:00. Заголовок: А вот и нет... :sm4..
А вот и нет... Видимо не сильно популярен Клиппер в данный момент. Хотя даже по ZX спектруму инфы можно выкачать гигабайты. А по Клипперу - пустота. Хотя есть несколько документов. Что ж, будем играться!
|
|
|
|
| |
Пост N: 2275
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.02.12 14:42. Заголовок: demetrius2003 Чуть ..
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 07.02.12
|
|
Отправлено: 07.02.12 15:41. Заголовок: Да! Спасибо за ссылк..
Да! Спасибо за ссылку. Один из присутствующих документов я и скачал в виде архива.
|
|
|
|
| |
Пост N: 5
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 16:49. Заголовок: Продолжаю задавать г..
Продолжаю задавать глупые вопросы. 1. Клиппер изначально затачивался под применение DBF-файлов? Т. е. это его родной формат? Есть ли в нём встроенные функции для работы скажем с Paradox DB? 2. Взял data.dbf из какой-то базы. Набросал простецкую программу: ? "Start program" USE data NEW FOR i=1 TO LASTREC() GO i A = PDATE B = SUMMA C = ADDR ? A, B, C, RECNO() NEXT ? "End program, press a key" INKEY(0) CLOSE data (Кстати! Как в форум код правильно вставлять? Есть ли теги CODE /CODE или наподобие?) Вопрос по программе - USE открывает базу data. Так? А если мне надо сразу несколько баз открытыми держать, то как система узнает, к примеру, чей LASTREC() использовать? 3. Как менять значения полей в произвольной записи, выбранной скажем по номеру?
|
|
|
|
| |
Пост N: 398
Зарегистрирован: 11.06.10
|
|
Отправлено: 08.02.12 16:56. Заголовок: Может лучше Harbour ..
Может лучше Harbour изучать? demetrius2003 пишет: цитата: | Вопрос по программе - USE открывает базу data. Так? А если мне надо сразу несколько баз открытыми держать, то как система узнает, к примеру, чей LASTREC() использовать? |
| use db1 new use db2 new ?db1->(lastrec()) ?db2->(lastrec()) demetrius2003 пишет: цитата: | 3. Как менять значения полей в произвольной записи, выбранной скажем по номеру? |
| field->name_field1 := value replace name_field2 with value
|
|
|
|
| постоянный участник
|
Пост N: 721
Зарегистрирован: 27.01.07
|
|
Отправлено: 08.02.12 17:00. Заголовок: 1. Да, только DBF. 2..
1. Имхо, только DBF. 2. Нужно так: USE Data ALIAS Base1 NEW. Далее BASE1->( LastRec() ) Чтобы форматировать текст, есть тег моноширинный шрифт (кнопка с цифрами 123) 3. BASE1->Summa := nSumma записывает в поле Summa текущей записи значение переменной nSumma.
|
|
|
|
| |
Пост N: 6
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 17:45. Заголовок: Понятно. Изменил про..
Понятно. Изменил программу: ? "Start program" USE data NEW USE data2 NEW FOR i=1 TO data->(LASTREC()) GO i A = data->(PDATE) B = data->(SUMMA) C = data->(ADDR) ? A, B, C, data->(RECNO()) NEXT ? "End program, press a key" INKEY(0) CLOSE data Теперь проблема в операторе GO. Фишка со стрелками -> уже не прокатывает. В справочнике написано, что команда перемещает указатель записи на заданную запись текущей рабочей области. Т. е. прежде чем её использовать надо сменить рабочую область? Или использовать другую команду позиционирования? А какую? Кстати, к Харбору присматриваюсь. Но пока не вижу надобности в его изучении. Клиппер прост. Похож на MSX-Basic. Если одолею его в краткий срок можно будет и в работе применить. Частенько с DBF сталкиваюсь. Но пока так, чисто академический интерес. И да! Кстати! Текущая рабочая область - это то, что открыто в последней USE?
|
|
|
|
| |
Пост N: 2277
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.02.12 17:55. Заголовок: data->(dbgoto( i..
data->(dbgoto( i )) demetrius2003 пишет: цитата: | Текущая рабочая область - это то, что открыто в последней USE |
| В данном примере да.
|
|
|
|
|
| |
Пост N: 2278
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.02.12 17:59. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | FOR i=1 TO data->(LASTREC()) GO i A = data->(PDATE) B = data->(SUMMA) C = data->(ADDR) ? A, B, C, data->(RECNO()) NEXT |
| Можно так do while !data->(eof()) A = data->PDATE B = data->SUMMA C = data->ADDR ? A, B, C, data->(RECNO()) data->(dbskip()) enddo
|
|
|
|
| |
Пост N: 7
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 18:02. Заголовок: Ребята, спасибо, что..
Ребята, спасибо, что уделяете мне время! Кажется начинаю въезжать в Клиппер. Вот, только что сам дошёл: ? "Start program" USE data NEW USE data2 NEW FOR i=1 TO data->(LASTREC()) A = data->(PDATE) B = data->(SUMMA) C = data->(ADDR) ? A, B, C, data->(RECNO()) SKIP 1 ALIAS data NEXT ? "End program, press a key" INKEY(0) CLOSE data, data2 Хм. dbgoto(i) - нет такой функции в справочнике (и dbskip() тоже нет). Видимо секретная функция. Вобщем, плюс ко всему, одну и ту же проблему можно решить множеством способов.
|
|
|
|
| |
Пост N: 2279
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.02.12 18:04. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Хм. dbgoto(i) - нет такой функции в справочнике |
| Смотри dbgoto а так же dbgotop() dbgobottom()
|
|
|
|
| |
Пост N: 400
Зарегистрирован: 11.06.10
|
|
Отправлено: 08.02.12 18:05. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Кстати, к Харбору присматриваюсь. Но пока не вижу надобности в его изучении. Клиппер прост. |
| Harbour такой же простой как и clipper
|
|
|
|
| |
Пост N: 8
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 18:12. Заголовок: Нашёл! Более подробн..
Нашёл! Более подробно функции описаны в Norton guides. Там оказывается всё есть! Теперь начинаю понимать, почему в своё время Клиппер был так популярен.
|
|
|
|
| |
Пост N: 401
Зарегистрирован: 11.06.10
|
|
Отправлено: 08.02.12 18:18. Заголовок: Dima пишет: Можно т..
Dima пишет: цитата: | Можно так do while !data->(eof()) A = data->PDATE B = data->SUMMA C = data->ADDR ? A, B, C, data->(RECNO()) data->(dbskip()) enddo |
| Или так data->(dbeval({||qout( pdate,summa,addr,recno() )}))
|
|
|
|
| |
Пост N: 2280
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.02.12 18:24. Заголовок: AlexMyr пишет: Или ..
AlexMyr пишет: Опередил
|
|
|
|
| |
Пост N: 9
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 18:33. Заголовок: data->(dbeval({&..
data->(dbeval({||qout( pdate,summa,addr,recno() )})) Жесть. Как в том анекдоте. Я то думал, что Perl - единственный язык, программы на котором одинаково выглядят до и после обфускации... Утянул Harbour и xHarbour. Попробовал им обоим скормить свою прожку. Всё конвертится ОК. Только что мне делать с получившимися сишниками? Если просто перетяну в MinGW ведь не скомпилится с первого раза? И в Борланде не скомпилится просто так. Т. е. быстрого старта, как с Клиппером не будет явно. Хотя, возможно, необходимо всего лишь один раз всё настроить?
|
|
|
|
| |
Пост N: 2281
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.02.12 18:37. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Утянул Harbour и xHarbour. |
| Создавай тему Изучаю (X)Harbour
|
|
|
Ответов - 80
, стр:
1
2
3
4
All
[только новые]
|
|