Автор | Сообщение |
|
| |
Пост 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
|
|
|
|
| |
Пост N: 10
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 18:38. Заголовок: Не, не. Мозг то не р..
Не, не. Мозг то не резиновый. Пока достаточно Клиппера.
|
|
|
|
|
| |
Пост N: 402
Зарегистрирован: 11.06.10
|
|
Отправлено: 08.02.12 18:46. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Не, не. Мозг то не резиновый. Пока достаточно Клиппера. |
| А чего ждать, разбираться все равно придется рано или поздно , так что будет тема - поможем
|
|
|
|
| постоянный участник
|
Пост N: 722
Зарегистрирован: 27.01.07
|
|
Отправлено: 08.02.12 19:20. Заголовок: demetrius2003, для H..
demetrius2003, для Harbour: hbmk2 <имя prg> - получаешь .exe
|
|
|
|
| |
Пост N: 139
Зарегистрирован: 11.10.11
|
|
Отправлено: 08.02.12 19:31. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | (Кстати! Как в форум код правильно вставлять? Есть ли теги CODE /CODE или наподобие?) |
| Для кода я выбираю моноширинный шрифт. Но у него есть недостаток, что он некоторые символы кода рассматривает, как символы форматирования текста. Например, индекс элемента массива я указываю обрамленным в пробелы, то есть следующим образом: a[ i ]. Если этого не делать, то индекс не выводится, а получается только a, как будто бы допущена ошибка в коде. цитата: | (Вопрос по программе - USE открывает базу data. Так? А если мне надо сразу несколько баз открытыми держать, то как система узнает, к примеру, чей LASTREC() использовать? 3. Как менять значения полей в произвольной записи, выбранной скажем по номеру? |
| У Clipper имеется 256 рабочих областей для баз данных. Что это означает? Что имеется таблица из 255 записей, в которой он строит структуры, связанные с базой дданных. То есть одноврменно вы можете максимально теоретически открыть 255 баз данных. Рабочая область с номером 0 используется для текущей базы данных. У Clipper имеется система драйверов для работы с базами данных. Поэтому вы можете работать с любыми типами баз данных, лишь бы был соответсвующий драйвер, который удовлетворяет требованиям Clipper к драйверам баз данных. Вы также можете открывать базу данных и в команде открытия указывать, какой драйвер будет задействован для этой базы данных. В Clipper 5.01 вы можете одновременно использовать лишь 4 драйвера баз данных. В более сттарших версиях таких ограничений нет. С каждой базой данной при открытии вы можете связывать алиас и обращаться к базе данных по имени алиаса. Я не помню, но, кажется, если вы не указываете сами алиас, то имя базы данных становится алиасом. так как Clipper писался еще для старых операционных систем DOS, то максимальный путь, включая имя самого файла, не должен превышать 64 знака. На самом деле в DOS, насколько я помню, задание полной спецификации файла может составлять 81 байт, то есть 64 байта - это вложенные директории, 12 - байтов - имя файла, 2 байта - имя диска с двоеточием, обозначение корневого директория и слеш для разделения вложенных директориев от имени файла. То есть всего получается 80 байтов плюс заключительный нулевой байт. Но Clipper для этого отводит лишь 64 ,плюс заключительный ноль. Поэтому вам не следует глубоко на диске "закапывать" свои базы данных.
|
|
|
|
| |
Пост N: 11
Зарегистрирован: 07.02.12
|
|
Отправлено: 08.02.12 19:38. Заголовок: Хм. Работает в Харбо..
Хм. Работает в Харборе мой примерчик! Токма размер exe у него... Сыроежка, спасибо за наводку про драйверы. Надо будет копнуть в этом напрвлении.
|
|
|
|
| |
Пост N: 403
Зарегистрирован: 11.06.10
|
|
Отправлено: 08.02.12 21:22. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Хм. Работает в Харборе мой примерчик! |
| Работает, куда он денется. demetrius2003 пишет: цитата: | Токма размер exe у него... |
|
Как выясняется это уже не актуально сейчас, а вот скорость работы проги собранной с помощью harbour превосходит аналогичную прогу собранную clipper. Еще exe на harbour можно сжать upx-ом.
|
|
|
|
| постоянный участник
|
Пост N: 262
Зарегистрирован: 06.02.07
|
|
Отправлено: 09.02.12 13:04. Заголовок: AlexMyr пишет: Как ..
AlexMyr пишет: цитата: | Как выясняется это уже не актуально сейчас, а вот скорость работы проги собранной с помощью harbour превосходит аналогичную прогу собранную clipper. Еще exe на harbour можно сжать upx-ом. |
|
Ооо, там (в (x)Harbour'е) еще такооое можно делать!.. :) :) Я тут некогда начал на основе раздела "What's MiniGUI" файла помощи MiniGUI.chm (который идет с библиотекой MiniGUI Ext., которую Григорий Филатов собирает - см. тему в форуме http://clipper.borda.ru/?1-1-0-00000283-000-0-0-1328691952) делать некий "курс молодого MiniGUI-бойца" (см. http://gustow.narod.ru/harbour/MiniGUI_help/welcome.htm) (еще на примере help'а от версии 1.5.54 2008 года) - да позабросил, всё руки не доходят... Но хоть что-то для "первый раз в первый класс" Harbour-школы... :)
|
|
|
|
| |
Пост N: 12
Зарегистрирован: 07.02.12
|
|
Отправлено: 09.02.12 15:54. Заголовок: Ладно, ещё вопрос. Ч..
Ладно, ещё вопрос. Читаю документацию. Частенько встречаю выражение Get-области. Но объяснения, что же это такое нет. Но это так, мелочь. Главное же, что меня озадачило сегодня - реляции. Т. е. как я понял весь цимус в команде SET RELATIONS TO? Вот пример. Есть две таблички. Описание первой: # #=============================================================================== #==TABLE no 25 : Справочник Номенклатура # Name |Descr |Type[A/S/U]|DBTableName|ReUsable T=SC33 |Справочник Номенклатура |A |SC33 |1 #-----Fields------- # Name |Descr |Type|Length|Precision F=ID |ID object |C |9 |0 F=PARENTID |ID parent obj |C |9 |0 F=CODE |object code |C |6 |0 F=DESCR |object description |C |100 |0 F=ISFOLDER |Flag - Is Line - Fol|N |1 |0 F=ISMARK |Flag Object is Marke|C |1 |0 F=VERSTAMP |Version stamp |C |6 |0 F=SP3752 |(P)Артикул |C |25 |0 F=SP3757 |(P)БазоваяЕдиница |C |9 |0 F=SP124 |(P)ВалютаУчета |C |9 |0 F=SP3792 |(P)Вес |N |15 |3 F=SP689 |(P)ВидТовара |C |9 |0 F=SP5514 |(P)ГруппаДляДекларац|C |9 |0 F=SP4374 |(P)ГТД |C |9 |0 F=SP3753 |(P)ЕдиницаПоУмолчани|C |9 |0 F=SP5515 |(P)КодИД |C |10 |0 F=SP3755 |(P)МинимальныйОстато|N |15 |3 F=SP5516 |(P)НаимДляКассы |C |12 |0 F=SP4089 |(P)НомерГТД |C |21 |0 F=SP3756 |(P)ОКДП |C |7 |0 F=SP5517 |(P)Отходы |C |9 |0 F=SP5518 |(P)Признак |C |9 |0 F=SP5519 |(P)Размер |C |9 |0 F=SP5520 |(P)СрокГодности |D |8 |0 F=SP3304 |(P)СтатьяИздержекУсл|C |9 |0 F=SP4091 |(P)СтранаПроисхожден|C |30 |0 F=SP3563 |(P)ТипТовара |C |9 |0 F=SP5521 |(P)ТовСкид |N |11 |0 F=SP3815 |(P)ТорговаяНаценка |N |7 |2 F=SP5522 |(P)Убыль |C |9 |0 F=SP3866 |(P)УчетнаяЦена |N |16 |2 F=SP5523 |(P)ЦеноваяСхема |C |9 |0 F=SP3559 |(P)ШтрихКод |C |13 |0 #----Indexes------ # Name |Descr |Unique|Indexed fields |DBName I=IDD |of ID |0 |ID |IDD I=PCODE |of PARENT and |0 |PARENTID,ISFOLDER,CODE(UPPER) |PCODE I=PDESCR |of PARENT and |0 |PARENTID,ISFOLDER,DESCR(UPPER) |PDESCR I=CODE |of CODE |0 |CODE(UPPER) |CODE I=DESCR |of DESCR |0 |DESCR(UPPER) |DESCR I=VI3752 |VI3752 |0 |SP3752(UPPER=128) |VI3752 I=VIP3752 |VIP3752 |0 |PARENTID,ISFOLDER,SP3752(UPPER=128) |VIP3752 I=VI5514 |VI5514 |0 |SP5514 |VI5514 I=VIP5514 |VIP5514 |0 |PARENTID,ISFOLDER,SP5514 |VIP5514 I=VI4374 |VI4374 |0 |SP4374 |VI4374 I=VIP4374 |VIP4374 |0 |PARENTID,ISFOLDER,SP4374 |VIP4374 I=VI5515 |VI5515 |0 |SP5515(UPPER=128) |VI5515 I=VIP5515 |VIP5515 |0 |PARENTID,ISFOLDER,SP5515(UPPER=128) |VIP5515 I=VI3563 |VI3563 |0 |SP3563,DESCR(UPPER) |VI3563 I=VIP3563 |VIP3563 |0 |PARENTID,ISFOLDER,SP3563,DESCR(UPPER) |VIP3563 I=VI3559 |VI3559 |0 |SP3559(UPPER=128),DESCR(UPPER) |VI3559 I=VIP3559 |VIP3559 |0 |PARENTID,ISFOLDER,SP3559(UPPER=128),DESCR(UPPER) |VIP3559 # Описание второй: # #=============================================================================== #==TABLE no 92 : Документ (Мн.ч.) Перемещение # Name |Descr |Type[A/S/U]|DBTableName|ReUsable T=DT239 |Документ (Мн.ч.) Перемещение |A |DT239 |1 #-----Fields------- # Name |Descr |Type|Length|Precision F=IDDOC |ID Document's |C |9 |0 F=LINENO |LineNo |N |4 |0 F=SP249 |(P)Товар |C |9 |0 F=SP250 |(P)Количество |N |15 |3 F=SP251 |(P)Единица |C |9 |0 F=SP1034 |(P)Коэффициент |N |11 |3 F=SP5880 |(P)Цена |N |16 |2 F=SP5881 |(P)Сумма |N |18 |2 F=SP5882 |(P)Проц |N |11 |1 F=SP5883 |(P)ЦенаИсх |N |11 |2 F=SP5884 |(P)СуммаИсх |N |18 |2 #----Indexes------ # Name |Descr |Unique|Indexed fields |DBName I=IDLINE |of IDDOC+LineN|0 |IDDOC,LINENO |IDLINE # Собственно первая таблица - справочник товаров. Вторая - документы типа перемещение. Но не в этом суть. Если я начну выводить строки скажем первого документа, то вместо наименований товаров и их атрибутов я увижу их ID (поле SP249). Как вместо поля SP249 выводить данные из первой таблицы. Т. е. как именно связь осуществить? И последнее. Прошу сильно не пинать, но действительно этого пока не понимаю. Зачем нужны индексные файлы? Ведь можно вполне и без них обойтись? Они ведь не несут смысловой нагрузки? В данном случае я прекрасно без них работаю с табличками.
|
|
|
|
| |
Пост N: 404
Зарегистрирован: 11.06.10
|
|
Отправлено: 09.02.12 16:05. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | И последнее. Прошу сильно не пинать, но действительно этого пока не понимаю. Зачем нужны индексные файлы? Ведь можно вполне и без них обойтись? Они ведь не несут смысловой нагрузки? В данном случае я прекрасно без них работаю с табличками. |
| Зачем в мне в библиотеке картотека? Я буду по одной книге перебирать и найду то, что ищу demetrius2003 пишет: цитата: | Т. е. как именно связь осуществить? |
| Так demetrius2003 пишет: доку смотрели по этой команде?
|
|
|
|
| |
Пост N: 13
Зарегистрирован: 07.02.12
|
|
Отправлено: 09.02.12 16:13. Заголовок: Вот именно, что не п..
Вот именно, что не понимаю, зачем в библиотеке картотека? Я бы по незнанию в цикле записи перебирал. Вот такая глупость! Вот пример, реально работающий, выводящий все строчки 4 документа: ? "Start program" USE SC33 NEW USE DT239 NEW SELECT DT239 FOR i=1 TO LASTREC() lineno = LINENO tovar = SP249 kolvo = SP250 cena = SP5880 summa = SP5881 IF IDDOC = " 4" ? lineno, tovar, kolvo, cena, summa ENDIF SKIP 1 NEXT ? "End program, press a key" INKEY(0) CLOSE data Вместо товара - айдишник в виде непонятного набора символов. Доку по команде SET RELATIONS TO сижу изучаю.
|
|
|
|
| |
Пост N: 405
Зарегистрирован: 11.06.10
|
|
Отправлено: 09.02.12 16:20. Заголовок: ? "Start program..
? "Start program" USE SC33 NEW USE DT239 NEW index on iddoc to dt239 SELECT DT239 ordscope(0," 4") ordscope(1," 4") dbgotop() dbeval({||qout(lineno, tovar, kolvo, cena, summa)}) ? "End program, press a key" INKEY(0) CLOSE data Ну батенька, знаете что такое обфускация, тогда изучайте нормализацию и индексацию
|
|
|
|
|
| |
Пост N: 14
Зарегистрирован: 07.02.12
|
|
Отправлено: 09.02.12 16:54. Заголовок: Вот пример, работает..
Вот пример, работает как надо, т. е. как я хочу. Но медленооооо... ? "Start program" USE SC33 NEW USE DT239 NEW SELECT DT239 FOR i=1 TO LASTREC() lineno = LINENO tovarid = SP249 SELECT SC33 LOCATE FOR ID = tovarid tovar = DESCR SELECT DT239 kolvo = SP250 cena = SP5880 summa = SP5881 IF IDDOC = " 4" ? lineno, tovar, kolvo, cena, summa ENDIF SKIP 1 NEXT ? "End program, press a key" INKEY(0) CLOSE data Т. е. как я понял, индекс позволит мне не искать каждый раз, где находится необходимая мне запись? Т. е. заранее будет известно где что лежит и работать соответственно будет в разы быстрее? Я так полагаю к Клипперу это не имеет прямого отношения, т. е. тут уже копать надо в дисциплину под общим названием "Базы данных". И да, ещё в догонку. Кто как борется с кодовыми страницами? Я так понимаю встроенных средств перекодировки в Клиппере нет? Т. е. если у меня таблицы в cp1251, то едиственный вариант - писать функцию перекодировки самому?
|
|
|
|
| |
Пост N: 406
Зарегистрирован: 11.06.10
|
|
Отправлено: 09.02.12 17:01. Заголовок: Снова, смотрим в сто..
Снова, смотрим в сторону Harbour
|
|
|
|
| |
Пост N: 2282
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.02.12 17:03. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Т. е. как я понял, индекс позволит мне не искать каждый раз, где находится необходимая мне запись? |
| есть у тебя база и в ней мильон записей , как ты будешь искать IDDOC равное " 4" не имея индекса по этому полю ? Думаю только перебором что будет очень долго. А при наличии индекса сделать это можно просто и без затрат по времени if dbseek(" 4" ) ? "Найдено" else ? "Не найдено" endif demetrius2003 пишет: После Locate хорошо бы проверить результат поиска с помощью Found()
|
|
|
|
| |
Пост N: 2283
Зарегистрирован: 17.05.05
|
|
Отправлено: 09.02.12 17:05. Заголовок: demetrius2003 пишет:..
|
|
|
|
| постоянный участник
|
Пост N: 263
Зарегистрирован: 06.02.07
|
|
Отправлено: 10.02.12 07:59. Заголовок: demetrius2003 , тут ..
demetrius2003 , тут ( http://online.spb4plus.ru/index.html?01_info.htm) доку по Клипперу (онлайновую, правда) смотрели? Это оцифровка (не совсем полностью) книжки года 1990го, кажется, по Клиппер 5.01 - который лично я пользую до сих пор. Для понимания базовых идей типа "реляционности" (и, соответственно, назначения команд типа SET RELATION TO ... INTO ...) почитайте что угодно про тот же Фокспро (про "реляционные базы данных"); а учиться с самого начала на форуме, задавая вопросы по всем мелочам, о которых можно прочитать где-то - только свое и чужое время тратить, думаю.
|
|
|
|
| |
Пост N: 15
Зарегистрирован: 07.02.12
|
|
Отправлено: 10.02.12 09:55. Заголовок: gustow, я Вам мешаю?..
gustow, я Вам мешаю? Или может отнял у Вас слишком много Вашего времени? Извиняюсь. Учится с самого начала на форуме есть смысл. Особенно если этот форум почти единственный источник информации по заданной теме. Онлайн-оцифровки не в счёт (их уже есть у меня) - они никогда не заменят живое общение. Про реляции - я понял, что напал на неизвестный мне пласт информации. И я изучу его без помощи форумчан, потому как этой инфы в сети с избытком. Но более-менее въехать в Клиппер без помощи всё тех же форумчан у меня (да и у других начинающих с нуля я думаю тоже) не получится. А так посудить, так мы все приходя на различные форумы тратим своё время и время чужое - админов, модераторов и пользователей форума. Так и получается, начинающие приходят, задают глупые вопросы, получают пинки в нужном направлении, и более менее разобравшись двигаются дальше самостоятельно.
|
|
|
|
| постоянный участник
|
Пост N: 265
Зарегистрирован: 06.02.07
|
|
Отправлено: 13.02.12 06:47. Заголовок: Прошу прощения, что ..
Прошу прощения, что потратил Ваше время на чтение моего ответа (да еще впридачу - на написание ответа на мой глупый ответ).
|
|
|
|
| |
Пост N: 16
Зарегистрирован: 07.02.12
|
|
Отправлено: 16.02.12 12:18. Заголовок: Ребята! Чисто технич..
Ребята! Чисто технический вопрос. Есть код: ? "Start program" USE DT239 NEW ? "Start dt239" INDEX ON IDDOC TO DT239 USE SC33 NEW ? "Start sc33" INDEX ON ID TO SC33 Размер ДБФ-файлов: DT239 - 34574 байт SC33 - 9208530 байт Смысл в том, что построение индекса таблицы DT239 проходит моментально, а SC33 мягко говоря нет. Т. е. не понятно, идёл ли оно вообще, или всё повисло. Ждал более часа, менял виртуалку на qemu. Каким образом можно контролировать этот процесс?
|
|
|
|
| |
Пост N: 2296
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.12 13:14. Заголовок: demetrius2003 Какая..
demetrius2003 Какая версия Clipper ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 16.02.12 14:25. Заголовок: Еще очень хорошая кн..
Еще очень хорошая книга есть: Сухов Н. "Практический курс программирования на CA-Clipper"
|
|
|
|
|
| |
Пост N: 17
Зарегистрирован: 07.02.12
|
|
Отправлено: 16.02.12 14:27. Заголовок: clipper.exe возвраща..
clipper.exe возвращает 5,3
|
|
|
|
| |
Пост N: 2297
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.12 14:33. Заголовок: demetrius2003 Тогда..
demetrius2003 Тогда смотри предложение EVAL команды Index
|
|
|
|
| |
Пост N: 2298
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.12 16:13. Заголовок: Alw Spencer пишет: ..
Alw Spencer пишет: цитата: | Еще очень хорошая книга есть: Сухов Н. "Практический курс программирования на CA-Clipper" |
| В электронном виде ?
|
|
|
|
| |
Пост N: 160
Зарегистрирован: 11.10.11
|
|
Отправлено: 16.02.12 18:03. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Смысл в том, что построение индекса таблицы DT239 проходит моментально, а SC33 мягко говоря нет. Т. е. не понятно, идёл ли оно вообще, или всё повисло. Ждал более часа, менял виртуалку на qemu. Каким образом можно контролировать этот процесс? |
| При инлексировании вызывается функция sort, для работы которой нужно много памяти и место на диске под временный набор. Попробуйте запустить индексацию автономно в простейшей программе, которая больше ничего не содержит. Кроме того у вас индекс возможно состоит из различных выражений со строками, которые постоянно требуют выделения памяти для их копирования при вычислении выражений.
|
|
|
|
| |
Пост N: 2301
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.12 18:11. Заголовок: Сыроежка пишет: Кро..
Сыроежка пишет: цитата: | Кроме того у вас индекс возможно состоит из различных выражений со строками |
| Нет там ни чего похожего. demetrius2003 пишет:
|
|
|
|
| |
Пост N: 426
Зарегистрирован: 11.06.10
|
|
Отправлено: 16.02.12 18:16. Заголовок: У меня база весит 23..
У меня база весит 23 мегабайта и количество записей 420 тис. и индексируется она приблизительно минуту, может быть проблема в железе (винчестер), нужно попробовать на другом компе. Сыроежка пишет: цитата: | Кроме того у вас индекс возможно состоит из различных выражений со строками, которые постоянно требуют выделения памяти для их копирования при вычислении выражений. |
| внимательно читаем demetrius2003 пишет: цитата: | Ребята! Чисто технический вопрос. Есть код: ? "Start program" USE DT239 NEW ? "Start dt239" INDEX ON IDDOC TO DT239 USE SC33 NEW ? "Start sc33" INDEX ON ID TO SC33 |
| какие выражения?
|
|
|
|
| |
Пост N: 18
Зарегистрирован: 07.02.12
|
|
Отправлено: 16.02.12 19:38. Заголовок: Код предельно прост...
Код предельно прост. Проблема с железом исключена - программа запускалась под DosBox, QEmu и на железном компе - результаты везде одинаковы. Жаль, что нет ошибок времени исполнения, ни чего похожего. Прога всё-ж виснет. SC33.NTX создаётся 1024 байта и всё - тишина! Кстати, файл SC33.DBF взят из 1С базы. Сама 1С при тестировании говорит, что файл нормален. Это вдвойне странно, ведь DT239.DBF оттуда же и переваривается нормально. Ладно, пока отставим это на потом. Изучу Index, Eval и т. д. Там видно будет.
|
|
|
|
| |
Пост N: 2303
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.02.12 19:46. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: А метни этот файлик в архиве на какой нить файлообменник , проверю у себя.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 16.02.12 22:06. Заголовок: Вот еще нашел http:/..
|
|
|
|
| |
Пост N: 19
Зарегистрирован: 07.02.12
|
|
Отправлено: 17.02.12 06:11. Заголовок: файлы..
Dima - файлы Иван - эти дистрибутивы и руководство встречаются очень часто, на каждом шагу. Я это видел множество раз. Кроме этого ничего нет.
|
|
|
|
| постоянный участник
|
Пост N: 739
Зарегистрирован: 27.01.07
|
|
Отправлено: 17.02.12 08:58. Заголовок: demetrius2003, сейча..
demetrius2003, сейчас проверил индексацию SC33.DBF. Только не Клиппером, а Харбором. Индекс (NTX) создался за 0.06 сек.
|
|
|
|
| |
Пост N: 2305
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.02.12 10:52. Заголовок: demetrius2003 Clipp..
demetrius2003 Clipper 5.2e use sc33 new index on id to test Dbfntx - NTX cоздан успешно Sixcdx - IDX cоздан успешно
|
|
|
|
| |
Пост N: 2306
Зарегистрирован: 17.05.05
|
|
Отправлено: 17.02.12 11:05. Заголовок: demetrius2003 Попро..
demetrius2003 Попробуй так ? "Start program" USE DT239 NEW ? "Start dt239" INDEX ON IDDOC TO DT239 USE SC33 NEW ? "Start sc33" INDEX ON ID TO SC33 BROWSE() Дойдет дело до browse или нет. Кодировка в базе Ansi поэтому в browse будут крякозяблы.
|
|
|
|
| |
Пост N: 20
Зарегистрирован: 07.02.12
|
|
Отправлено: 17.02.12 11:07. Заголовок: Подтверждаю! Harbour..
Подтверждаю! Harbour-2.1. Доли секунды - и два индексных файла (SC33.NTX - 414720 байт, DT239.NTX - 7168 байт) готовы. Полагаю, что проблема скорее всего в 1С, а точнее в их понимании DBF формата. Но кто бы знал! Знать бы ещё причину такого поведения! До browse не дойдет, что-то подобное пробовал. P.S.: Всё! Разобрался! Без изменения кода скомпилировал в Clipper 5.2. Прога отработала и выдала индексы. Правда размер SC33.NTX - 419840 байт.
|
|
|
|
| Администратор
|
Пост N: 2259
Зарегистрирован: 23.05.05
|
|
Отправлено: 17.02.12 11:40. Заголовок: Дополнительные глюки..
Дополнительные глюки может давать dosbox
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 24.02.12 17:48. Заголовок: Dima пишет: Alw Sp..
Dima пишет: цитата: | Alw Spencer пишет: цитата: Еще очень хорошая книга есть: Сухов Н. "Практический курс программирования на CA-Clipper" В электронном виде ? |
| Dima, увы, только в бажном виде, как и цитата: | 2. "CA-Clipper 5.2 и билиотека CA-Clipper TOOLS 3.0" Канатников А.Н., Ткачев С.Б. 3. "Clipper. Руководство по программированию. 3 издание, версия 5.01" Рик Спенс. Это единственная оригинаьная книга, которая не является простой компиляцией документации. |
| Много раз перечитанные.
|
|
|
|
| |
Пост N: 21
Зарегистрирован: 07.02.12
|
|
Отправлено: 27.02.12 14:27. Заголовок: Очередной вопрос - а..
Очередной вопрос - а есть ли у Клиппера механизм подобный ссылкам или указателям? Как я, к примеру, могу организовать структуру связанного списка?
|
|
|
|
| |
Пост N: 170
Зарегистрирован: 11.10.11
|
|
Отправлено: 27.02.12 14:58. Заголовок: demetrius2003 пишет:..
demetrius2003 пишет: цитата: | Очередной вопрос - а есть ли у Клиппера механизм подобный ссылкам или указателям? Как я, к примеру, могу организовать структуру связанного списка? |
| Связный список - это, по сути, некоторый определенный интерфейс, который может быть реализован разными способами. Так как в Clipper массив обладает достаточной гибкостью, позволяя вставлять элементы в любую позицию, то вы с помощью массива можете обеспечить функциональность связного списка.
|
|
|
|
| Администратор
|
Пост N: 2284
Зарегистрирован: 23.05.05
|
|
Отправлено: 27.02.12 15:06. Заголовок: Есть передача параме..
Есть передача параметров функции по ссылке - перед переменной надо указать символ @: myfunc(@par1) Есть также тип блок кода. Это что-то вроде адреса функции, только это делается намного более гибко. Для создания списка можно использовать массивы. Массив - это собственно не массив в традиционном понимании, а именно список: элементом массива может быть значение любого типа данных, в том числе массива. Таким образом, можно создавать структуры произвольной сложности.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 02.03.12
|
|
Отправлено: 02.03.12 20:26. Заголовок: Посмотри на новом са..
|
|
|
|
| |
Пост N: 65
Зарегистрирован: 25.02.10
|
|
Отправлено: 05.03.12 11:29. Заголовок: мож кому сгодится --..
мож кому сгодится -- сканы нескольких статей из 4х журналов Nantucket News линк: http://zalil.ru/32821893 ЗЫ журналы пробегали мимо меня году так в 92 (господя, уже 20 лет прошло) в чужой фирме и дали подержать на полчаса. посему ксерил быстро и токмо то шо интересовало на тот момент так шо за качество копий просьба не пинать да и время не пощадило бумагу
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.03.12 11:34. Заголовок: Seva пишет: Посмотр..
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 28.03.08
|
|
Отправлено: 09.04.12 18:51. Заголовок: Немножко по Clipper
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 28.03.08
|
|
Отправлено: 14.04.12 19:25. Заголовок: Выложил еще кусочек ..
|
|
|
|
| |
Пост N: 5
Зарегистрирован: 28.03.08
|
|
Отправлено: 03.06.12 09:03. Заголовок: Еще информация по Clipper
|
|
|
|
| постоянный участник
|
Пост N: 2222
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.06.12 19:10. Заголовок: GeorgTor пишет: Ле..
GeorgTor пишет: Посмотрел папку "Конвертирование DBF в Excell" - очень интересно, а большие файлы конвертирования потянет ?
|
|
|
|
| |
Пост N: 2386
Зарегистрирован: 17.05.05
|
|
Отправлено: 04.06.12 08:08. Заголовок: Andrey пишет: а бол..
Andrey пишет: цитата: | а большие файлы конвертирования потянет ? |
| Потянет конечно , вопрос в том скушает ли Excel такой большой файл ;)
|
|
|
|
| постоянный участник
|
Пост N: 2223
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.06.12 08:38. Заголовок: GeorgTor пишет: Леж..
GeorgTor пишет: GeorgTor пишет: Ссылки битые. А это по Задорнову: ClipAll1.rar, , ClipAll3.rar, ClipAll4.rar и т.д.
|
|
|
|
| |
Пост N: 63
Зарегистрирован: 03.12.08
|
|
Отправлено: 04.06.12 21:40. Заголовок: Подписывайте что леж..
Подписывайте что лежит в архивах !
|
|
|
|
| |
Пост N: 6
Зарегистрирован: 28.03.08
|
|
Отправлено: 08.06.12 20:59. Заголовок: Последнее по Клиппер..
|
|
|
|
| Администратор
|
Пост N: 2380
Зарегистрирован: 23.05.05
|
|
Отправлено: 09.06.12 20:24. Заголовок: GeorgTor пишет: Вре..
GeorgTor пишет: цитата: | Время разбрасывать камни... |
| Спасибо ! Фундаментальная подборка
|
|
|
|
| |
Пост N: 22
Зарегистрирован: 07.02.12
|
|
Отправлено: 03.07.12 17:53. Заголовок: Ух ты! А кто успел с..
Ух ты! А кто успел скачать ClipAll и ClipAll1? Я все думал завтра скачаю, завтра скачаю... Завтра наконец наступило, но файлы видимо просрочились
|
|
|
|
| |
Пост N: 2428
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.07.12 18:15. Заголовок: demetrius2003 Похож..
demetrius2003 Похоже мало кто успел...... У меня только это ClipAll2.rar ClipAll3.rar ClipAll4.rar ClipAll5.rar ClipAll6.rar ClipAll7.rar ClipAll8.rar
|
|
|
|
| |
Пост N: 7
Зарегистрирован: 28.03.08
|
|
Отправлено: 03.07.12 20:30. Заголовок: Кто не успел скачать
Пишите, что нужно конкретно, я сформирую архив и выложу. Я и сам не помню,что было в тех двух архивах...
|
|
|
|
| |
Пост N: 23
Зарегистрирован: 07.02.12
|
|
Отправлено: 04.07.12 18:06. Заголовок: GeorgTor! Вы не пове..
GeorgTor! Вы не поверите! Не знаю, как другим, а мне надо всё! Конфа эта сегодня есть, завтра нет. Инфы с каждым годом становится всё меньше и меньше. Неровен час вобще в интернете окромя сисек ничего не останется...
|
|
|
|
| постоянный участник
|
Пост N: 2257
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.07.12 23:30. Заголовок: demetrius2003 пишет:..
|
|
|
|
| |
Пост N: 272
Зарегистрирован: 11.10.11
|
|
Отправлено: 05.07.12 17:49. Заголовок: Там есть дистрибутив..
Там есть дистрибутив Clipper 5.3b? А то у меня только есть, если память не изменяет, clipper.lib.
|
|
|
|
| |
Пост N: 548
Зарегистрирован: 11.06.10
|
|
Отправлено: 06.07.12 08:32. Заголовок: Сыроежка дааааа, дис..
Сыроежка дааааа, дистибутив cl*pper найти куда сложнее, чем стандарты по с/с++ изучать. Сыроежка пишет: цитата: | А то у меня только есть, если память не изменяет, |
|
как же, изменяет.
|
|
|
|
| Администратор
|
Пост N: 2438
Зарегистрирован: 23.05.05
|
|
Отправлено: 06.07.12 09:23. Заголовок: Нормальные герои все..
|
|
|
Ответов - 80
, стр:
1
2
3
4
All
[только новые]
|
|