Форум » Clipper » Изучаю Clipper » Ответить

Изучаю Clipper

demetrius2003: Доброго всем времени суток! Решил немного подучить 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

Dima: Держал в руках такой учебник очень давно (когда Clipper 5.01 покупали) Скана в сети не видел.........

Сыроежка: У меня из книг по Clipper имелись и имеются следующие книги: 1. "Руководство по применению Cliipper 5.0 на ПЭВМ" под общей редакцией Барранова и Воробьева. Фактически . это перевод документации. 2. "CA-Clipper 5.2 и билиотека CA-Clipper TOOLS 3.0" Канатников А.Н., Ткачев С.Б. 3. "Clipper. Руководство по программированию. 3 издание, версия 5.01" Рик Спенс. Это единственная оригинаьная книга, которая не является простой компиляцией документации. Самое смешное, что я даже по памяти уже не помню, как выглядит оператор цикла в Clipper! Так как поглащен изцчением С++.

demetrius2003: О! Спасибо за оперативность. Попробую Рика Спенса найти. Хоть фамилия с названием известны. Уже кое что.


demetrius2003: А вот и нет... Видимо не сильно популярен Клиппер в данный момент. Хотя даже по ZX спектруму инфы можно выкачать гигабайты. А по Клипперу - пустота. Хотя есть несколько документов. Что ж, будем играться!

Dima: demetrius2003 Чуть http://online.spb4plus.ru/index.html?01_info.htm

demetrius2003: Да! Спасибо за ссылку. Один из присутствующих документов я и скачал в виде архива.

demetrius2003: Продолжаю задавать глупые вопросы. 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. Как менять значения полей в произвольной записи, выбранной скажем по номеру?

AlexMyr: Может лучше 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

PSP: 1. Имхо, только DBF. 2. Нужно так: USE Data ALIAS Base1 NEW. Далее BASE1->( LastRec() ) [pre2] Чтобы форматировать текст, есть тег моноширинный шрифт (кнопка с цифрами 123) [/pre2] 3. [pre2]BASE1->Summa := nSumma[/pre2] записывает в поле Summa текущей записи значение переменной nSumma.

demetrius2003: Понятно. Изменил программу: [pre] ? "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 [/pre] Теперь проблема в операторе GO. Фишка со стрелками -> уже не прокатывает. В справочнике написано, что команда перемещает указатель записи на заданную запись текущей рабочей области. Т. е. прежде чем её использовать надо сменить рабочую область? Или использовать другую команду позиционирования? А какую? Кстати, к Харбору присматриваюсь. Но пока не вижу надобности в его изучении. Клиппер прост. Похож на MSX-Basic. Если одолею его в краткий срок можно будет и в работе применить. Частенько с DBF сталкиваюсь. Но пока так, чисто академический интерес. И да! Кстати! Текущая рабочая область - это то, что открыто в последней USE?

Dima: data->(dbgoto( i )) demetrius2003 пишет: Текущая рабочая область - это то, что открыто в последней USE В данном примере да.

Dima: demetrius2003 пишет: FOR i=1 TO data->(LASTREC()) GO i A = data->(PDATE) B = data->(SUMMA) C = data->(ADDR) ? A, B, C, data->(RECNO()) NEXT Можно так [pre2] do while !data->(eof()) A = data->PDATE B = data->SUMMA C = data->ADDR ? A, B, C, data->(RECNO()) data->(dbskip()) enddo [/pre2]

demetrius2003: Ребята, спасибо, что уделяете мне время! Кажется начинаю въезжать в Клиппер. Вот, только что сам дошёл: [pre] ? "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 [/pre] Хм. dbgoto(i) - нет такой функции в справочнике (и dbskip() тоже нет). Видимо секретная функция. Вобщем, плюс ко всему, одну и ту же проблему можно решить множеством способов.

Dima: demetrius2003 пишет: Хм. dbgoto(i) - нет такой функции в справочнике Смотри dbgoto а так же dbgotop() dbgobottom()

AlexMyr: demetrius2003 пишет: Кстати, к Харбору присматриваюсь. Но пока не вижу надобности в его изучении. Клиппер прост. Harbour такой же простой как и clipper

demetrius2003: Нашёл! Более подробно функции описаны в Norton guides. Там оказывается всё есть! Теперь начинаю понимать, почему в своё время Клиппер был так популярен.

AlexMyr: 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() )}))

Dima: AlexMyr пишет: Или так Опередил

demetrius2003: [pre2]data->(dbeval({||qout( pdate,summa,addr,recno() )}))[/pre2] Жесть. Как в том анекдоте. Я то думал, что Perl - единственный язык, программы на котором одинаково выглядят до и после обфускации... Утянул Harbour и xHarbour. Попробовал им обоим скормить свою прожку. Всё конвертится ОК. Только что мне делать с получившимися сишниками? Если просто перетяну в MinGW ведь не скомпилится с первого раза? И в Борланде не скомпилится просто так. Т. е. быстрого старта, как с Клиппером не будет явно. Хотя, возможно, необходимо всего лишь один раз всё настроить?

Dima: demetrius2003 пишет: Утянул Harbour и xHarbour. Создавай тему Изучаю (X)Harbour



полная версия страницы