ПредишенСледващото


Всичко за отстраняване на подпочвените води. Отводняване част на склон. както и всичко за дъждовни води kanadlizatsii.

Chem Работа chepez FIBC lychshe хим chepez BDE?

1. Можете да поставите samostoyatelno papametpy tpanzaktsy, dazhe в изпълнение.
2. Можете да tpanzaktsii на neskolko бази данни.
3. Можете да се създаде "живи" в заявките към множество таблици.
4. Ppilozhenie, ispolzyyuschee FIBC СИ nyzhdaetsya в poddepzhke BDE, щепсел pposche на
ystanavlivat и е персонализиран.
5. вариации с използване на FIBC poyavlyaetsya да се насладите polyami
Interbase.
Аз използвам mogy FIBC за работа с C ++ Builder?

Поради различията на FIBC в VCL да се свърже с C ++ Builder 1.0 ppakticheski
nevozmozhno. Съгласно C ++ Builder 3.0 FIBC стойка Без ppoblem. За тази neobhodimo
SELECT pynkt Компонент / Инсталиране на нов компонент, трябва да бъде поставен в ykazat звено име на файла
FIBDataset.pas подават pytem, ​​натиснете OK. Zatem трябва да бъде свързан в ppoekt
gds32.lib и събират. Следваща Добави chepez компонент / инсталиране на пакети
добавете пакета на контейнерите, както и всички, bibliotekoy може да се използва.
Поставих Делфи, FIBC. Pochemy ydaetsya НЕ се свързват с ydalennomy sepvepy?

FIBC tpebyet присъствие ystanovlennogo klienta Interbase.
Защо след FIBTransaction.Commit zakpyvayutsya Всички datasety?

За ChELOVEK, разглезено MODE AUTOCOMMIT в BDE mozhet изглежда
neppivychnym и neydobnym на obstoyatelstvo че ЗАКРИВАНЕ ВРЕМЕ tpanzaktsii
avtomaticheski zakpyvayutsya Всички datasety. Ppichina като povedeniya
zaklyuchaetsya СИ в FIBC и Interbase. Дело, че всички в opepatsii
Interbase пускат само kontekste tpanzaktsii. Sledovatelno,
dolzhen себе си програмист, за да се грижи за и pepeotkpytii datasetov
vosstanovlenii tekyschih ykazateley posle ангажират / намаление на цените. Pekomendyem
използвате metodom TFIBTransaction.CommitRetaining, ексцентричност vypolnyaet
Ангажиране Bez ЗАКРИВАНЕ kypsopov (standaptnaya възможност Interbase).
Как да се организира свързване към базата данни с по подразбиране потребителско име и парола?

1. Това може да стане, например, както следва:
с FIBDatabase направя започне
DBParams.Clear;
DBParams.Add ( "isc_dpb_user_name = SYSDBA ');
DBParams.Add ( "isc_dpb_password = Masterkey ');
UseLoginPrompt: = фалшива;
Свързан: = вярно;
приключи;
2. Или това:
Използването на околната среда променливи:
в Autoexec.bat
SET ISC_USER = SYSDBA
SET ISC_PASSWORD = Masterkey
TFIBDatabase.DBParams но все пак трябва да се регистрират най-малко, например,
LC_CTYPE = win1251.Esche една функция (или грешка :))
Isc_dpb_ префикс в опциите предписани в DBParams, може да се пропусне.
Той ydaetsya vvesti kipillicheskie герои в tablitsy.

На първо място, ybedites, че базата данни е създадена с код на страницата
WIN1251. На второ място, в propishite DBParams имот в ekzemplyapa Обекта
TFIBDatabase линия isc_dpb_lc_ctype = WIN1251. Ppefiks isc_dpb_ възможни
opyskat.
ПРОМЕНИ konkypentnom Промяна програми за запис ще висят. Pochemy? Той vizhy Променете sepvepe на данни, pokyda СИ изпълни pepezapysk tpanzaktsii. Pochemy?

Potomy които са настроени papametpov tpanzaktsii на ymolchaniyu.
В pepvom slychae ozhidaetsya когато ще се играе zavepshena konkypentnaya tpanzaktsiya,
staptovavshaya panshe (UTILITY изчакване), и по втория тип slychae ppichina - UTILITY
no_rec_version zapyska tpanzaktsii. Pobopot vysheoznachennye ppoblemy възможно,
nappimep, ppopisav в TRParams имоти у ekzemplyapa Обекта TFIBTransaction
sledyyuschie papametpy:
isc_tpb_write
isc_tpb_nowait
isc_tpb_read_committed
isc_tpb_rec_version

isc_tpb_ префикс може да се пропусне.
Hastoyatelno pekomendyem прочетете за papametpah tpanzaktsy в Interbase
API Guide (стр. 46 от книгата от Interbase Mediakit).
Когато се извиква периодично FIBDataSet.Open възникне грешка в PbD линия ^ [Ь]: = метод нула FetchCurrentRecordToBuffer.

Smenite vepsiyu FIBC на bolee svezhyyu или zablokipyyte ychastok код
на koto.pom voznikaet pystym грешка манипулатор грешка.
Kak pabotat с петно ​​spedstvami FIBC?

РАБОТА ppimepy Работа с петно ​​полета. FIBDatase1BLOBFIELD - трябва да бъде поставен
тип BLOB dataseta FIBDatabase1

Четенето от поле петно ​​в OleContainer

Var S: TStream;
започвам
ако не и след това FIBDataset1BLOBFIELD.IsNull
започвам
S: = FIBDataset1.CreateBlobStream (FIBDataset1BLOBFIELD, bmRead);
опитвам
OleContainer1.LoadFromStream (S)
накрая
S.Free
приключи;
приключи;
приключи;

Записът петно ​​трябва да бъде поставен от OleContainer (vyzyvaetsya в BeforePost)

Var S: TStream;
започвам
S: = FIBDataSet1.CreateBlobStream (FIBDataSet1BLOBFIELD, bmReadWrite);
опитвам
OleContainer1.SaveToStream (S)
накрая
S.Free
приключи;
приключи;
Как да работим с нови интерфейси в тяхната RemoteDataModule?

(IDispatch (RemoteServer.AppServer) като IAnother)

Трябва да се отбележи, че това ще работи само ако използвате DCOM като транспорт.
Как мога да използвам TClientDataSet в локалното приложение с Paradox таблици без TProvider компонент и TRemoteServer?

Вие не можете да се отървете от доставчика (дори и да го хвърли на модула с форма / данни не трябва да), но можете да използвате TClientDataSet една точка (едностепенна) приложение. За да отворите DataSet клиент, трябва да възложите доставчик на данни ръчно.

Трябва също така да се даде възможност на модула, за да предложим BDEProv употреби.
Как да се премине на потребителско име и парола, за да модул за дистанционно данни (дистанционно datamodule)?

отдалечен модул данни хвърлей компонент TDatabase В, след това добавете процедурата за автоматизация (т Редактиране на главното меню | Добави към Interface) за Вход.

Уверете се, че имот HandleShared TDatabase компонент е настроен на True.

процедура Вход (потребителско име, парола: WideString);
започвам


DB.DatabaseName: = потребителско име + "DB";
DB.Params.Values ​​[ 'потребителско име']: = потребителско име;
DB.Params.Values ​​[ 'ПАРОЛА']: = парола;
DB.Open;
приключи;

След като сте създали автоматизирания метод, можете да го наричат ​​с помощта на:

RemoteServer1.AppServer.Login ( "USERNAME", "ПАРОЛА ');
Как мога да се определят наличните сървъри за приложения на машината чрез Регистъра?

Прочетете ключ под HKEY_CLASSES_ROOT \ CLSID \ *, като го гледам за ключове, които имат подключ "Borland DataBroker". Тези събития са сървърите за приложения.

По-долу е пример, който зарежда имената на наличните сървъри за приложения в падащ списък:

използва вписванията;
процедура TForm1.FormCreate (Sender: TObject);

I: цяло число;
TempList: TStringList;
започвам
TempList: = TStringList.Create;
опитвам
с TRegistry.Create правя
опитвам
RootKey: = HKEY_CLASSES_ROOT;
ако OpenKey ( "CLSID ', False), след това
GetKeyNames (TempList);
CloseKey;
защото: = 1 до TempList.Count - 1 правя
ако KeyExists ( "CLSID \" + TempList [I] + '\ Borland DataBroker "), след това
започвам
ако OpenKey ( "CLSID \" + TempList [I] + '\ ProgID', False)
след това
започвам
Listbox1.Items.Add (ReadString ( ""));
CloseKey;
приключи;
приключи;
накрая
безплатно;
приключи;
накрая
TempList.Free;
приключи;
приключи;
Имам включени dbclient.dll в рубриката "допълнителни файлове" Опции за разпространение на уеб, но този файл никога не се изтегля към клиента. Как да го оправя?

Вашият INF-файл трябва да включва следния ред:

FileVersion - тази версия на файла в кабината-файл (проверка на информация за версията DBCLIENT, за да бъде сигурен за съответствие).

Уверете се, че FileVersion се отнася до версията на вашата DBCLIENT.DLL.

Можете да поставите dbclient.dll в кабината-файла с помощта CABARC полезност, която ще намерите в папката Delphi \ боклук.

Приблизителен команда CABARC повикване може да изглежда така:

CABARC N DBCLIENT.CAB DBCLIENT.DLL
Как да стигна до методите за кандидатстване на сървъра на TClientDataSet?

AppServer - само за четене имот, който се връща на интерфейса отдалечен сървър, който се връща от доставчика на сървъра на приложения. клиентските приложения могат да комуникират директно със сървъра на приложения чрез този интерфейс.
Трябва ли да се образува в сървъра на приложения?

По желание, че те са видими, но трябва да има най-малко един. За да бъде основната форма невидим, задайте

в файла на проекта.

започвам
Application.ShowMainForm: = False;
Application.Initialize;
Application.CreateForm (TForm1, Form1);
Application.Run;
край.
Какво получавам от присъствието ConstraintBroker (брокер ограничения)?

ConstraintBroker ви позволява да се даде възможност за проверка на ограниченията върху данните.

Това означава, че когато поискате информация, можете да получите заедно с тях, както и правилата, които те dorlzhny се срещат. Тези правила автоматично без допълнителен код влязат в сила.

Както се случва без нито един ред код, не е нужно да се пренапише или актуализират приложението, всеки път, когато се променят правилата.

В действителност, тя е просто решение на проблема с обновяването на приложението на клиента, без да го излизане.

Всяко приложение, което използва ConstraintBroker, автоматично получава качество ..
Да приемем, че потребителят се е променило областта на низ в празно. Как тогава OnUpdateData манипулатор може да се определи дали това поле се променя на Null низ или поле просто не е променен?

Използвайте NEWVALUE TField клас имот при четене на втория запис (този, който съдържа промени). Ако стойността на връщане (вариант) не се определя или празна, тогава областта е променен.

Ето няколко илюстративна код:

Var
NewVal: Вариант;

започвам
. NewVal: = DataSet.FieldByName ( "MyStrField) NEWVALUE;
ако VarIsEmpty (NewVal) след това
ShowMessage ( "Невярно е бил редактиран")
иначе, ако VarIsNull (NewVal), след това
ShowMessage ( "Поле бе заличена от")
още
ShowMessage ( "New Стойност на полето:" + String (NewVal));
приключи;
Ако се вгледате в, ще видим как ще използва тази информация, за да изведете низ "източник форма RecError на (в хранилище)"Когато изведете грешки времето на данни.

На сървъра добавите нивото на запис ограничения при използване на ограничения собственост на вашата TQuery / TTable или ограничава нивото на поле с TField постоянни обекти (като се използва или FieldsEditor CustomConstraint или ImportedConstraint).

Ако използвате ограничения поле на ниво, те трябва да влязат в сила, когато dannyeotpravlyayutsya в областта (например, когато напускате тялото на контрола, свързан с тази област (като TDBEdit)).
Каква е разликата между контакти, DCOM и OLE предприятието, когато се използва като транспортно?

Sockets (TCP / IP):
- клиент и сървър изисква TCP / IP стека;
- Няма допълнителна конфигурация на клиента;
DCOM:
- клиенти и сървъри изискват присъствието на DCOM (част от Windows NT 4.0, за Windows 95 е на разположение като опция)
- да наложи корекция на клиенти (DCOM Configuration Utility - Dcomcnfg.exe);
- вградена поддръжка за модел за сигурност Windows NT;
- подпомагане извика (методи);
CORBA
- клиенти и сървъри изискват Общата цел Искане Брокер;
- клиентите трябва регулиране;
- подпомагане извика (методи);
OLE Enterprise:
- на клиенти и сървъри изисква OLE предприятие;
- клиентите трябва регулиране;
- подпомагане извика (методи).
Когато се прилага ApplyUpdates на ClientDataSet, от страната на сървъра не работи OnNewRecord събитие за оригиналния набор от данни. Как да го оправя?

Нищо. Тези актуализации отиват направо през BDE, а не чрез компонент набор от данни.

В Delphi 4.0 (C ++ Builder 4.0) ситуацията се промени коренно.

Първо, можете да укажете нормално доставчика на данни (TProvider), как да се актуализират данните.

На второ място, новият тип доставчик (TDataSetProvider) работи само чрез sootvetvuyuschie методи TDataSet.

Това е - всички събития, при дадените условия на сървъра ще бъдат тествани по обичайния начин.

Ако използвате по-стара версия на Delphi, както обикновено, тя може да си ти препоръчително да се използват съхранени процедури, в този контекст, той ще бъде методите за сървърни приложения. За съжаление, Съветът не е приемливо за транспортни Sockets.
Как мога да избера само част от данните на клиента с определена позиция на набор от данни на сървъра?

Най-приемлива е използването на TQuery и Provider.SetParams.

Но можете да го направите по различен начин:

На първо място, на клиента, което трябва да се разгледа само метаданните за масива от данни от сървъра. Това може да стане чрез определяне на PacketRecords 0, а след това се обадете Open. След това можете да се обадите на метода на сървъра (трябва да определя метода на сървъра), която ще поставите курсора върху желаната позиция на първо място.

И най-накрая, задайте PacketRecords желаната стойност по-голяма от нула, и се обадете GetNextPacket.
Защо са ми ISAPI ориентирани библиотеки, създадени с Delphi 3, не могат да се справят с няколко връзки?

Wizard за създаване на ISAPI DLL в Делфи 3 създава напълно сигурна многонишковите библиотека, но не постави знамето, заявявайки, че заявлението, че библиотеката е на сигурно място в това отношение.

Това е лесно да се отстрани само чрез добавяне на ред:

на първа линия в започне в края на участък от файла на проекта (DPR).
Как да направите най-малко проверка на коректността на глобален идентификатор (GUID), както и интерфейси наследена от IDispatch (и следователно подкрепят методи за автоматизация)?

Обадете CreateRemoteComObject, минавайки интерфейс GUID и името на компютъра, който се опитва да се свърже. Ако функцията връща грешка, а след това има проблем със сървъра, или потенциален проблем се отнася до клиента.

конст
MyGUID = ''; // Каквато и да е GUID.

Var
Вуйчо: IUnknown;
Disp: IDispatch;

приключи;
Ако тази част от кода работи, но проблемът не е отстранен, тогава ще трябва да отида стъпка по стъпка чрез кода на клиента и да намерят, където той дава една пукнатина. Ако не можете да го намерите, ще трябва да стартирате сървъра под дебъгер и да комуникира с клиента, така че можете да трасира в непосредствена близост до мястото, давайки на въглищен прах.
Как мога да се отърва от "регистриран" името на сървъра, ако не искате да го използвате за?

Стартирайте изпълним файл сървър с ключ / UNREGSERVER:

Това е най-обичайния начин да се дерегистрира за OLE сървър автоматизация.
След като използвате мишката, кликнете с десния бутон, за да създадете доставчик функция, как мога отново стартирате команда от меню за бърз достъп "Износ от таблица"?

Ето един прост пример за копиране на файл (компресиран или не):

----------
Var
srcHandle, destHandle: цяло число;
srcBuf, destBuf: TOFStruct;

Ако трябва да копирате множество файлове наведнъж, използвайте поредица от ефективност:

Var
източник: низ;
sourceHandle: Word;


.
източник: = 'а: \ anyfile.ext ";
.
източник: = източник + # 0;
sourceHandle: = _lopen (@source [1], чете или OF_SHARE_DENY_NONE);
Променете разширението BITMAP.


Промених разширение BMP изображения върху 3LG. След това, за да изтеглите * .3LG-като изображение на компонента Image1 дам командата
Image1.Picture.LoadFromFile ( "C: \ TEST.3LG ');
Получавам грешка, казвайки неправилно разширение. Как мога да получа около това? (Това е същата BMP, но аз просто смяна на разширението до него)

Вижте процедура RegisterFileFormat.

Свързани статии

Подкрепете проекта - споделете линка, благодаря!