[Форум] [Помощь] [Поиск] [Выйти] |
Добро пожаловать, User |
|
|
| ||
Помогите пожалуйста!!! Суть проблемы в следующем: мне необходимо работать с dbf файлами не используя визуальные компоненты, что я делаю для проверки работоспособности: я регистрирую базу данных в SQL Explorer, создаю кансольное приложение, создаю Data Module, подключаю к нему соотв базу данных с помощью TTable и Data Source, модуль, в котором прописан и объявлен Data Module подключаю к основному модулю (для консоли - это файл проекта) и пытаюсь получить для соответствующей таблицы хотябы число полей в наборе данных(FieldCount) и вывести это на консоль. При выполнении программы нет ни каких ошибок (во всяком случае среда ничего не сообщает) но консоль быстро пропадает и программа завершается (затормозить не удаётся), короче: с консолью ничего не получается... Но когда я пробую то же самое сделать, создавая вместо консоли форму и выводя результат в Edit, то всё получается... Что делать? Помогите!!! |
| ||
Да! По специфике задачи визуальные компоненты использовать нельзя... |
| ||
В смысле просто выпечатать? А реадлн в конце есть? может вывод все же имеет место быть, только вы не успеваете его засечь? А потрассивровать? Или религия не позволяет? |
| ||
Дело в том, что реадлн в конце не помогает, а при трассировке, опять же, просто всё проскакивает. Вот она программка: program Project2; {$APPTYPE CONSOLE} uses SysUtils, Unit1 in 'Unit1.pas' {DataModule1: TDataModule}; var str:integer; begin DataModule1.block.Active:=true; DataModule1.block.Open; writeln(DataModule1.block.FieldCount); readln(str); DataModule1.block.Close; end. Как видите, ничего сложного или феноменального нет, однако не работает. При чём, если пробую запускать откомпилированный файл, то в вин2000 получаю ошибку:Инструкция по адресу 0х0046в8аи обратилась к памяти по адресу 0х00000054. Память не может быть read. Делфи ошибок не выдаёт.... |
| ||
Э, брат, все дело в волшебных пузырьках. Подключил модуль и доволен. А СОЗДАВАТЬ ЕГО Пушкин БУДЕТ !!!! уЧИ МАТЧАСТЬ! По теме - с работы я тебе конечно не посоветую что делать конкретно, ибо не задавался подобными вопросами. Давненько ДБ компоненты не юзал. Но во первых, нафига тебе вообще еще один модуль? Неужели нельзя было просто прописать нужные юзы описать переменные для работы с бд а потом их создать? но даже если так, то перед опен ты должен был создать переменную типа Тдата модуле, и создать ее, что то вроде ДатаМодуль =ТДатаомодуле.Креате. |
| ||
кстати, чтобы проще и понятней. Найди справочник кулиба.цшм. Это бибилия начинающего и не очень дельфийца. Смотреть там по адресу создание компонент рунтайм. |
| ||
Отлично!!! Берём два модуля и лёгким движением руки получаем: program Project2; {$APPTYPE CONSOLE} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables; // Unit1 in 'Unit1.pas' {DataModule1: TDataModule}; type TDataModule1 = class(TDataModule) block: TTable; blockENTITY: TStringField; blockLAYER: TStringField; blockELEVATION: TBCDField; blockTHICKNESS: TBCDField; blockCOLOR: TBCDField; DSblock: TDataSource; end; var DataModule1: TDataModule1; str:integer; begin DataModule1.Create(nil); //DataModule1.visible:=false; DataModule1.block.Active:=true; DataModule1.block.Open; writeln(DataModule1.block.FieldCount); readln(str); DataModule1.block.Close; end. И ни чего не работает!!! |
| ||
А справочника у меня нету :(( И взять не откуда (бедный студент)... |
| ||
тут еще не видно где указан сам файл.dbf |
| ||
тю, нету... уа.ру Кулиба, и по первой ссылке. Он небольшой, метра 2 |
| ||
Согласен. Если уш вы все прописали в один модуль так и поля ручками теперь заполнить надо. Все что мышкой раньше делали |
| ||
Я сталкивался с проблемой dbf правда не в таком контексте, но пришлось писать собственную обработку dbf , что и тебе советую, Это не сложно и быстро дня за три можно сделать , мог бы выслать но эту гадость я писал на C++ |