Upload
tranxuyen
View
212
Download
0
Embed Size (px)
Citation preview
D e l p h i P r o g r a m m i n gThere are only 10 types of people in the world Those who understand binary and thosewho donrsquot
Search Keywords
HomeTObjectCreate
Hakkında Ziyaretccedili Defteri
Net Posted by Tuğrul HELVACI - Haziran 21 2009 Comments 15
Win32 amp Net(Delphi-gtC)
Aslında herşey Java adı verilen programlama dilinin doğuşuna kadar ilerliyor Javaprogramlama duumlnyasına farklı bir perspektif katmıştı Yazılan kodların appletrsquoler vasıtası ile webortamlarında kullanılabilmesi yada Java Runtime ile değişik işletim sistemi platformlarındaccedilalıştırılabiliyor olması onu guumlnden guumlne daha popuumller hacircle getiriyordu
Microsoft kendi işletim sistemlerinin yeryuumlzuumlndeki tuumlm bilgisayarlarda kullanılamayacağınınfarkına vardığında Javarsquoya karşı bir oumlnlem almak gerektiğini duumlşuumlnduuml ve bu sayede veriye herortamdan erişebilecek bir sistem planlamaya başladı Ancak elbette Javarsquonın da hacirclabeceremediği gibi Microsoftrsquoda platform bağımsızlığı hususunda başarılı olamadı Zatentasarımların gereği de bunu pek muumlmkuumln kılmıyordu Javarsquoda uumlretilen kodların bytecodersquolaraccedilevrilmesi ve JVM(Java Virtual Machine) adı verilen programlarla uumlzerinde ccedilalıştığı platformaadapte edilmesindeki suumlreccedil Netrsquode de kendisine farklı isimlerle yer buldu
Net uumlrettiği MSIL kodunu uumlzerinde ccedilalıştığı platformun anlayacağı makina dili koduna ise JITvasıtası ile ccedilevirir Bu tıpkı Javarsquonın JVMrsquoine benzer Aradaki benzerlikleri saymaya kalksakemin olun sayfalarca yazı yazmamız gerekir Benim bu makalede amacım bu iki platformbağımsız olduğunu iddia eden teknolojinin benzerliklerini ve farklılıklarını anlatmak değil Bu
Plugin WP FlashTime by horoscop 2009orgrequires Flash Player 8 or better currency
converter calculatorPlugin creat de horoscop |horoscop saptamanal | horoscop zilic | horoscop
| play sonic games
Etiketler
Absolute Abstract Classes ActionScript Algoritma
API Bug Byte Arrays Class Reference CloseHandle
COM CreateDesktop CreateEvent CreateMutexCreateProcess CreateRemoteThread CreateSemaphoreCreateToolHelp32SnapShot CreateWaitableTimerDeleteCriticalSection delphi 2010 DTS EnterCriticalSectionEnumDesktopProc EnumDesktops Flash Function
Contact Me | Subscribe
PDFmyURLcom
bilgileri genel kuumlltuumlr amacı ile sunduktan sonra Delphirsquonin bu teknolojiler ile iletişimi hakkındabilgi vermek ve gerccedilek platform bağımsız kodlamanın gelecekte Delphi ileolabileceğinin umudunu sizlerle paylaşmak
Goumlruumllduumlğuuml uumlzere gerek Net gerekse de Java platform bağımsız native kod geliştiremiyorlarUumlrettikleri ara kodların ccedileşitli işletim sistemlerinde yorumlanıp makina koduna ccedilevrilmelerigerekiyor Dolayısı ile teoride bu teknolojileri kullanan uygulamaların native uygulamalardanhızlı olması beklenmiyor
Net bilindiği uumlzere programlama dillerinden bağımsız bir platform Framework adı verilen kodkuumltuumlphanelerinin tuumlm programlama dilleri tarafından ortak bir şekilde kullanılabilmesi CTSdenilen ortak tip sınıflarının Net iccedilinde olması herhangi bir Net destekli dilin bir diğer Netdestekli dil ile iletişimini son derece sorunsuz ve kolay hale getirmekte Buumlyuumlk ccedilaplı projeekiplerinin pek ccedilok programcıya sahip olduğu gerccedileği goumlz oumlnuumlne alındığında bu ekip uumlyelerininherhangi bir Net dilini bilmesi ve bu dil ile geliştirme yapmasının projeye olumsuz bir etkisininolmaması elbette son derece guumlzel bir durum
Net Framework adı verilen kaba tabiri ile programlama kuumltuumlphanesi şu aşamada 35versiyonunda bulunuyor Yakın bir zamanda 40 versiyonunun ccedilıkması bekleniyor Bildiğimkadarı ile Frameworkrsquoteki sınıf tasarımları Net framework 20primedan sonra herhangi bir değişikliğeuğramadı Sadece uumlzerine yeni yetenekler eklendi Kısaca Net terminolojisinden bahsettiktensonra Delphirsquonin bu terminolojiye hangi mesafede olduğu hakkında yazmak isterim
Delphi 7 hacircla pek ccedilok Delphi kullanıcısının kullandığı ana IDE durumunda Bunun stabilite vehız gibi pek ccedilok etkenleri var Delphi gerccedilek anlamda Net ile 8 versiyonunda buluştu AncakDelphi 8 Microsoftrsquoun Net teknolojisine ilk desteği veren uumlruumln olduğu iccedilin hiccedilte stabil değildive Delphi severler tarafından pek de tutulmadı Ardından Borland Net platformuna desteğiniDelphi 2005 ile suumlrduumlrduuml Ancak kişisel tecruumlbelerim ile soumlyleyebilirim ki o da gerektiği oumllccediluumldestabil değildi ve pek ccedilok sorunu vardı Net desteği 2006 ve 2007 suumlruumlmlerine kadar devam ettive ardından buumlyuumlk bir değişim ile karşılaştık
Borland programlama uumlruumlnlerini CodeGear isimli firmaya devretmiş ve ardından bu uumlruumlnleriEmbarcadero isimli bir firma satın almıştı Bu suumlreccedilte artık Delphi ve diğer programlamaortamlarının Netrsquoe destek vermemesine karar verildi Bu son derece yerinde bir karardı Delphihayata ilk geldiği 1995 yılından bu zamana kadar native uygulama geliştirme konusundaduumlnyada pek ccedilok kez oumlduumll almış bir ortam iken Net framework desteği adına adeta kendikendine intihar etme kararı almıştı
Guumlnuumlmuumlzde Net programlama adına Delphi yazım tarzına aşina olan programcıların DelphiPrism uumlruumlnuumlnuuml tercih etmesi isteniyor Bu uumlruumln Net framework ortamına 100 destek verenve Delphi yazım tarzına son derece benzeyen Embarcadero firması programlama ortamlarıailesinin bir başka uumlruumlnuuml
Embarcadero Delphi uumlruumlnuumlnuuml satın aldıktan sonra beklentilerimizin aksine bu uumlruumln ailesineson derece oumlnem verdi ve uumlruumlnuumln eskide olduğu gibi popuumllerliğini yeniden kazanmasındabuumlyuumlk katkı sağlamaya başladı Bu konuda sevgili arkadaşımız Sadettin POLATrsquoın sitesindekimakaleyi okumanızı oumlneriyorum
EnumDesktopProc EnumDesktops Flash FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoGetThreadContext GetTickCount GetTickCount64Hacking Inheritance InitializeCriticalSectionInterface InterlockedCompareExchangeInterlockedDecrement InterlockedExchangeInterlockedExchangeAdd InterlockedIncrementJavaScript LeaveCriticalSection Method PointerModule32First Module32Next MSSQL OpenDesktopOpenEvent OpenMutex OpenSemaphoreOpenWaitableTimer Operator Overloading PersistancePointer Procedure Pointer ProcessProcess32First Process32Next Query QueryInterfaceQueryPerformanceCounter Queue ReleaseMutexReleaseSemaphore Reqursion ResetEvent ResumeThreadRTTI SetEvent SetProcessWorkingSetSizeSetThreadContext SetWaitableTimer Smilarity SORT SQLSQL Server Stream SuspendThread Sw itchDesktopTDateTime TerminateProcess TerminateThread
Thread TInterfacedObject TValue UntypedParameters VirtualAllocEx VirtualFreeEx
WaitForMultipleObjects WaitForSingleObjectWeaver WriteProcessMemory _AddRef _Release
WP Cumulus Flash tag cloud by Roy Tanckrequires Flash Player 9 or better
Son Yorumlar
Yeni Veri Tipleri ve Operator Overloading iccedilinTuğrul HELVACIYeni Veri Tipleri ve Operator Overloading iccedilinZafer CcedilelenkDelphi ve Google Maps API iccedilin TuğrulHELVACIDelphi ve Google Maps API iccedilin ahmetZiyaretccedili Defteri iccedilin Tuğrul HELVACI
PDFmyURLcom
Konumuzun Win32 ve Net olması muumlnasebeti ile kısa bir zaman sonra ccedilıkması beklenenyeni Delphi suumlruumlmuumlnuumln yani Delphi Weaverrsquoın ccedilok oumlnem verdiğim bir oumlzelliğini de sizlerlepaylaşmak istiyorum Delphi Weaverrsquoın oumlzelliklerinde listelenen ancak pek ccedilok kişinin dikkatinicezbetmeyen ldquoSeamless NET ltgt Native communicationrdquo oumlzelliği eminim pek ccedilok kişininnative uygulama geliştirebilecekleri ortamlara geccedilişinde etken olacaktır Peki nedir buldquoSeamless NET ltgt Native communicationrdquo oumlzelliği
Bu oumlzellik hakkında henuumlz net bir şey soumlz konusu değil Ancak neler yapılabileceğihususunda burayı ve bu haber grubunu takip etmenizi tavsiye edebilirim
Kısaca Win32 ortamında tamamen native kod geliştirirken Net framework fonksiyonalitesineherhangi bir COM bağımlılığı olmadan 100 delphi kodları ile erişmek isterseniz bu teknoloji
tam size goumlre demektir
Atozed Softwarersquoin uumlzerinde ccedilalıştığı CrossTalk isimli uumlruumln Delphi 5672009 altından NetFrameworkrsquoe erişebilmeniz iccedilin gereken tuumlm altyapıyı sağlayacak Projenin lideri olan Chad ZHover ile yapmış olduğum goumlruumlşme neticesinde oumlğrendiğim şey ise beni daha da sevindirdiCrosTalk uumlruumlnuuml Delphi Weawer ile birlikte gelecek Yani birkaccedil paragraf oumlnce belirttiğimizldquoSeamless NET ltgt Native communicationrdquo Delphi Weaver altındaki CrossTalk uumlruumlnuumlnuumlsimgeliyor
Bu yeni teknolojinin Delphirsquonin yuumlkselmesinde buumlyuumlk bir paydaya hizmet edeceği inancınıtaşıyorum Ayrıca Delphirsquonin hedefleri arasında Cross platform code compilation olduğunu dabilmenizi istiyorum İşte gerccedilek platform bağımsız kodlama bizlerin hizmetine sunulacakDelphirsquode yazdığımız uygulamaları Windows Linux yada MacOS gibi işletim sistemleriuumlzerinde ccedilalışır halde goumlreceğiz Elbette bu Netrsquoin yada Javarsquonın yaptığı gibi değil nativederleme ile yapılacak
Tuumlm bu anlatılanlar belki de hacircla afaki kalmış olabilir CrossTalkrsquoın yahut Delphi Weavericcedilindeki ldquoSeamless NET ltgt Native communicationrdquo oumlzelliğinin ne kadar oumlnemli olduğuanlaşılmamış da olabilir Bunun oumlnemini anlatabilmek iccedilin Win32primeden Netrsquoe erişmeyeccedilalışmak gerekir
Bu makalede Win32 ortamından Net Frameworkrsquoe erişeceğiz ve tuumlm bu zorlukları sizleringoumlzleri oumlnuumlne sereceğim Oumlncelikle Visual Studio 2005 ile bir Class Library(DLL)oluşturacağızBu DLLrsquoimiz SQL Server 2005primee erişim sağlayan bir kaccedil sınıftan ibaret olacakVe Bu DLLrsquoimizi Delphi 7 altından kullanacağız
O halde kodlamaya başlayabiliriz Oumlncelikle Visual Studiorsquomuzu accedilıyoruz ve yeni bir ClassLibrary projesi oluşturuyoruz Ardından MicrosoftSqlServerConnectionInfoMicrosoftSqlServerSmo MicrosoftSqlServerSmoEnum MicrosoftSqlServerSqlEnumlibraryrsquolerini referans olarak ekliyoruz Projemiz aşağıda goumlruumlnduumlğuuml gibi olacaktır
Son Yazılar
Yeni Veri Tipleri ve Operator OverloadingInterface Nedir Nerelerde ve Neden Kullanırız Derinlemesine Threading(3)SQLrsquode Benzerlik AlgoritmalarıhellipFull Text Searchinghellip
Kategoriler
Genel (4)IDE (1)
İşletim Sistemi (7)Programlama (43)
Net (3)C (2)Delphi (43)Grafik (2)Internet (4)Veritabanı (3)Win32 (6)
Takvim
Temmuz 2010
PDFmyURLcom
Bu makalenin can alıcı noktası Net ortamında yazdığımız kodlarımızın dışarıdan(Win32ortamından) kullanılabilmesi iccedilin COM programlamadan istifade edeceğimiz gerccedileğidir COMprogramlama kullanacağımıza goumlre dışarıdan erişime accedilacağımız tuumlm sınıfların ComVisibleattributersquou ile goumlruumlnuumlr hacircle getirilmesi gerekir Bir diğer oumlnemli nokta ise Class Libraryprojemizin oumlzelliklerinde gizlidir Bu oumlzel durumları aşağıdaki goumlrsellerden izleyebilirsiniz
Projemizin Application boumlluumlmuumlnden Assembly Information buttonuna tıklanarak yapılalacakayarlar
Temmuz 2010Pts Sal Ccedilar Per Cum Cts Paz
laquo Haz
1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31
Arşivler
Haziran 2010 (1)Mayıs 2010 (1)Nisan 2010 (3)Ağustos 2009 (1)Temmuz 2009 (2)Haziran 2009 (7)Mayıs 2009 (32)
Bağlantılar
Bir Tuumlrkccedile SevdalısıDelphi Tuumlrkiye ForumGuumlrcan OumlZTUumlRKMFatih KUumlCcedilUumlKKELEPCcedilEMemik YANIK KişiselMemik YANIKrsquoın GuumlnluumlğuumlNick HodgesSinan BARAN
PDFmyURLcom
Projemizin Build sayfasında yapılacak ayarlar
Zafer Ccedilelenk
Ziyaretccedili Bilgileri
Ziyaret 6 12073
Beğenilenler
Delphi 2010 (Weaver) ve TValue - 14 votesDerinlemesine Threading(3) - 13 votesDerinlemesine Threading(2) - 6 votesDerinlemesine Threading(1) - 6 votesYeni Veri Tipleri ve Operator Overloading - 4votesWin32 amp Net(Delphi-gtC) - 4 votesDelphi ve Google Maps API - 3 votesTThreadWaitFor Bug - 3 votesBITS(Background Intelligent Transfer Service)
PDFmyURLcom
Bu ayarların yapılmasına muumlteakip C tarafında SQL Server 2005primee bağlanan ve birveritabanının altındaki tuumlm tablolara erişim sağlayabileceğimiz kodları yazmaya başlamadanevvel anlatmamız gereken bir kaccedil husus daha var Bunlardan en oumlnemlisi Net frameworkplatformundaki her veri tuumlruumlnuuml COM ortamında kullanmanın zorluklarıdır Kullanmak istediğimizveri tuumlrleri ki bunların iccedilinde oumlzel sınıflar framework sınıfları gibi tuumlm veri tuumlrleri ComVisibleattributersquou ile işaretlenmiş olmalıdır Net ortamındaki tuumlm tuumlrlerin nasıl youmlnetileceğini dışuygulamalar bilemezler Binlerce tuumlr olduğu hesaplanırsa bu tuumlrlerin hepsinin ComVisible ileişaretlenmesinin ne kadar zor olduğu da aşikacircrdır
Makalemizin başlarında temel veri tuumlrlerinin Net iccedilinde tanımlı olduğunu ifade etmiştik BuCTS adını almıştı ve pek ccedilok programlama dilinin bir arada ccedilalışabilmesi iccedilin son derece
BITS(Background Intelligent Transfer Service)ile sessiz sedasız download ) - 3 votesBir Kiosk ve CreateDesktop macerası - 3votes
Meta
GirişYazılar RSSYorumlar RSSWordPressorg
Etiketler-Liste
Absolute API Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread CreateToolHelp32SnapShotDTS EnumDesktopProc EnumDesktops FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoHacking Inheritance Interface JavaScriptMethod Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer Process Process32First Process32NextReqursion RTTI SetProcessWorkingSetSize SQLServer Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
VirtualFreeEx WaitForSingleObjectWriteProcessMemory
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
bilgileri genel kuumlltuumlr amacı ile sunduktan sonra Delphirsquonin bu teknolojiler ile iletişimi hakkındabilgi vermek ve gerccedilek platform bağımsız kodlamanın gelecekte Delphi ileolabileceğinin umudunu sizlerle paylaşmak
Goumlruumllduumlğuuml uumlzere gerek Net gerekse de Java platform bağımsız native kod geliştiremiyorlarUumlrettikleri ara kodların ccedileşitli işletim sistemlerinde yorumlanıp makina koduna ccedilevrilmelerigerekiyor Dolayısı ile teoride bu teknolojileri kullanan uygulamaların native uygulamalardanhızlı olması beklenmiyor
Net bilindiği uumlzere programlama dillerinden bağımsız bir platform Framework adı verilen kodkuumltuumlphanelerinin tuumlm programlama dilleri tarafından ortak bir şekilde kullanılabilmesi CTSdenilen ortak tip sınıflarının Net iccedilinde olması herhangi bir Net destekli dilin bir diğer Netdestekli dil ile iletişimini son derece sorunsuz ve kolay hale getirmekte Buumlyuumlk ccedilaplı projeekiplerinin pek ccedilok programcıya sahip olduğu gerccedileği goumlz oumlnuumlne alındığında bu ekip uumlyelerininherhangi bir Net dilini bilmesi ve bu dil ile geliştirme yapmasının projeye olumsuz bir etkisininolmaması elbette son derece guumlzel bir durum
Net Framework adı verilen kaba tabiri ile programlama kuumltuumlphanesi şu aşamada 35versiyonunda bulunuyor Yakın bir zamanda 40 versiyonunun ccedilıkması bekleniyor Bildiğimkadarı ile Frameworkrsquoteki sınıf tasarımları Net framework 20primedan sonra herhangi bir değişikliğeuğramadı Sadece uumlzerine yeni yetenekler eklendi Kısaca Net terminolojisinden bahsettiktensonra Delphirsquonin bu terminolojiye hangi mesafede olduğu hakkında yazmak isterim
Delphi 7 hacircla pek ccedilok Delphi kullanıcısının kullandığı ana IDE durumunda Bunun stabilite vehız gibi pek ccedilok etkenleri var Delphi gerccedilek anlamda Net ile 8 versiyonunda buluştu AncakDelphi 8 Microsoftrsquoun Net teknolojisine ilk desteği veren uumlruumln olduğu iccedilin hiccedilte stabil değildive Delphi severler tarafından pek de tutulmadı Ardından Borland Net platformuna desteğiniDelphi 2005 ile suumlrduumlrduuml Ancak kişisel tecruumlbelerim ile soumlyleyebilirim ki o da gerektiği oumllccediluumldestabil değildi ve pek ccedilok sorunu vardı Net desteği 2006 ve 2007 suumlruumlmlerine kadar devam ettive ardından buumlyuumlk bir değişim ile karşılaştık
Borland programlama uumlruumlnlerini CodeGear isimli firmaya devretmiş ve ardından bu uumlruumlnleriEmbarcadero isimli bir firma satın almıştı Bu suumlreccedilte artık Delphi ve diğer programlamaortamlarının Netrsquoe destek vermemesine karar verildi Bu son derece yerinde bir karardı Delphihayata ilk geldiği 1995 yılından bu zamana kadar native uygulama geliştirme konusundaduumlnyada pek ccedilok kez oumlduumll almış bir ortam iken Net framework desteği adına adeta kendikendine intihar etme kararı almıştı
Guumlnuumlmuumlzde Net programlama adına Delphi yazım tarzına aşina olan programcıların DelphiPrism uumlruumlnuumlnuuml tercih etmesi isteniyor Bu uumlruumln Net framework ortamına 100 destek verenve Delphi yazım tarzına son derece benzeyen Embarcadero firması programlama ortamlarıailesinin bir başka uumlruumlnuuml
Embarcadero Delphi uumlruumlnuumlnuuml satın aldıktan sonra beklentilerimizin aksine bu uumlruumln ailesineson derece oumlnem verdi ve uumlruumlnuumln eskide olduğu gibi popuumllerliğini yeniden kazanmasındabuumlyuumlk katkı sağlamaya başladı Bu konuda sevgili arkadaşımız Sadettin POLATrsquoın sitesindekimakaleyi okumanızı oumlneriyorum
EnumDesktopProc EnumDesktops Flash FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoGetThreadContext GetTickCount GetTickCount64Hacking Inheritance InitializeCriticalSectionInterface InterlockedCompareExchangeInterlockedDecrement InterlockedExchangeInterlockedExchangeAdd InterlockedIncrementJavaScript LeaveCriticalSection Method PointerModule32First Module32Next MSSQL OpenDesktopOpenEvent OpenMutex OpenSemaphoreOpenWaitableTimer Operator Overloading PersistancePointer Procedure Pointer ProcessProcess32First Process32Next Query QueryInterfaceQueryPerformanceCounter Queue ReleaseMutexReleaseSemaphore Reqursion ResetEvent ResumeThreadRTTI SetEvent SetProcessWorkingSetSizeSetThreadContext SetWaitableTimer Smilarity SORT SQLSQL Server Stream SuspendThread Sw itchDesktopTDateTime TerminateProcess TerminateThread
Thread TInterfacedObject TValue UntypedParameters VirtualAllocEx VirtualFreeEx
WaitForMultipleObjects WaitForSingleObjectWeaver WriteProcessMemory _AddRef _Release
WP Cumulus Flash tag cloud by Roy Tanckrequires Flash Player 9 or better
Son Yorumlar
Yeni Veri Tipleri ve Operator Overloading iccedilinTuğrul HELVACIYeni Veri Tipleri ve Operator Overloading iccedilinZafer CcedilelenkDelphi ve Google Maps API iccedilin TuğrulHELVACIDelphi ve Google Maps API iccedilin ahmetZiyaretccedili Defteri iccedilin Tuğrul HELVACI
PDFmyURLcom
Konumuzun Win32 ve Net olması muumlnasebeti ile kısa bir zaman sonra ccedilıkması beklenenyeni Delphi suumlruumlmuumlnuumln yani Delphi Weaverrsquoın ccedilok oumlnem verdiğim bir oumlzelliğini de sizlerlepaylaşmak istiyorum Delphi Weaverrsquoın oumlzelliklerinde listelenen ancak pek ccedilok kişinin dikkatinicezbetmeyen ldquoSeamless NET ltgt Native communicationrdquo oumlzelliği eminim pek ccedilok kişininnative uygulama geliştirebilecekleri ortamlara geccedilişinde etken olacaktır Peki nedir buldquoSeamless NET ltgt Native communicationrdquo oumlzelliği
Bu oumlzellik hakkında henuumlz net bir şey soumlz konusu değil Ancak neler yapılabileceğihususunda burayı ve bu haber grubunu takip etmenizi tavsiye edebilirim
Kısaca Win32 ortamında tamamen native kod geliştirirken Net framework fonksiyonalitesineherhangi bir COM bağımlılığı olmadan 100 delphi kodları ile erişmek isterseniz bu teknoloji
tam size goumlre demektir
Atozed Softwarersquoin uumlzerinde ccedilalıştığı CrossTalk isimli uumlruumln Delphi 5672009 altından NetFrameworkrsquoe erişebilmeniz iccedilin gereken tuumlm altyapıyı sağlayacak Projenin lideri olan Chad ZHover ile yapmış olduğum goumlruumlşme neticesinde oumlğrendiğim şey ise beni daha da sevindirdiCrosTalk uumlruumlnuuml Delphi Weawer ile birlikte gelecek Yani birkaccedil paragraf oumlnce belirttiğimizldquoSeamless NET ltgt Native communicationrdquo Delphi Weaver altındaki CrossTalk uumlruumlnuumlnuumlsimgeliyor
Bu yeni teknolojinin Delphirsquonin yuumlkselmesinde buumlyuumlk bir paydaya hizmet edeceği inancınıtaşıyorum Ayrıca Delphirsquonin hedefleri arasında Cross platform code compilation olduğunu dabilmenizi istiyorum İşte gerccedilek platform bağımsız kodlama bizlerin hizmetine sunulacakDelphirsquode yazdığımız uygulamaları Windows Linux yada MacOS gibi işletim sistemleriuumlzerinde ccedilalışır halde goumlreceğiz Elbette bu Netrsquoin yada Javarsquonın yaptığı gibi değil nativederleme ile yapılacak
Tuumlm bu anlatılanlar belki de hacircla afaki kalmış olabilir CrossTalkrsquoın yahut Delphi Weavericcedilindeki ldquoSeamless NET ltgt Native communicationrdquo oumlzelliğinin ne kadar oumlnemli olduğuanlaşılmamış da olabilir Bunun oumlnemini anlatabilmek iccedilin Win32primeden Netrsquoe erişmeyeccedilalışmak gerekir
Bu makalede Win32 ortamından Net Frameworkrsquoe erişeceğiz ve tuumlm bu zorlukları sizleringoumlzleri oumlnuumlne sereceğim Oumlncelikle Visual Studio 2005 ile bir Class Library(DLL)oluşturacağızBu DLLrsquoimiz SQL Server 2005primee erişim sağlayan bir kaccedil sınıftan ibaret olacakVe Bu DLLrsquoimizi Delphi 7 altından kullanacağız
O halde kodlamaya başlayabiliriz Oumlncelikle Visual Studiorsquomuzu accedilıyoruz ve yeni bir ClassLibrary projesi oluşturuyoruz Ardından MicrosoftSqlServerConnectionInfoMicrosoftSqlServerSmo MicrosoftSqlServerSmoEnum MicrosoftSqlServerSqlEnumlibraryrsquolerini referans olarak ekliyoruz Projemiz aşağıda goumlruumlnduumlğuuml gibi olacaktır
Son Yazılar
Yeni Veri Tipleri ve Operator OverloadingInterface Nedir Nerelerde ve Neden Kullanırız Derinlemesine Threading(3)SQLrsquode Benzerlik AlgoritmalarıhellipFull Text Searchinghellip
Kategoriler
Genel (4)IDE (1)
İşletim Sistemi (7)Programlama (43)
Net (3)C (2)Delphi (43)Grafik (2)Internet (4)Veritabanı (3)Win32 (6)
Takvim
Temmuz 2010
PDFmyURLcom
Bu makalenin can alıcı noktası Net ortamında yazdığımız kodlarımızın dışarıdan(Win32ortamından) kullanılabilmesi iccedilin COM programlamadan istifade edeceğimiz gerccedileğidir COMprogramlama kullanacağımıza goumlre dışarıdan erişime accedilacağımız tuumlm sınıfların ComVisibleattributersquou ile goumlruumlnuumlr hacircle getirilmesi gerekir Bir diğer oumlnemli nokta ise Class Libraryprojemizin oumlzelliklerinde gizlidir Bu oumlzel durumları aşağıdaki goumlrsellerden izleyebilirsiniz
Projemizin Application boumlluumlmuumlnden Assembly Information buttonuna tıklanarak yapılalacakayarlar
Temmuz 2010Pts Sal Ccedilar Per Cum Cts Paz
laquo Haz
1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31
Arşivler
Haziran 2010 (1)Mayıs 2010 (1)Nisan 2010 (3)Ağustos 2009 (1)Temmuz 2009 (2)Haziran 2009 (7)Mayıs 2009 (32)
Bağlantılar
Bir Tuumlrkccedile SevdalısıDelphi Tuumlrkiye ForumGuumlrcan OumlZTUumlRKMFatih KUumlCcedilUumlKKELEPCcedilEMemik YANIK KişiselMemik YANIKrsquoın GuumlnluumlğuumlNick HodgesSinan BARAN
PDFmyURLcom
Projemizin Build sayfasında yapılacak ayarlar
Zafer Ccedilelenk
Ziyaretccedili Bilgileri
Ziyaret 6 12073
Beğenilenler
Delphi 2010 (Weaver) ve TValue - 14 votesDerinlemesine Threading(3) - 13 votesDerinlemesine Threading(2) - 6 votesDerinlemesine Threading(1) - 6 votesYeni Veri Tipleri ve Operator Overloading - 4votesWin32 amp Net(Delphi-gtC) - 4 votesDelphi ve Google Maps API - 3 votesTThreadWaitFor Bug - 3 votesBITS(Background Intelligent Transfer Service)
PDFmyURLcom
Bu ayarların yapılmasına muumlteakip C tarafında SQL Server 2005primee bağlanan ve birveritabanının altındaki tuumlm tablolara erişim sağlayabileceğimiz kodları yazmaya başlamadanevvel anlatmamız gereken bir kaccedil husus daha var Bunlardan en oumlnemlisi Net frameworkplatformundaki her veri tuumlruumlnuuml COM ortamında kullanmanın zorluklarıdır Kullanmak istediğimizveri tuumlrleri ki bunların iccedilinde oumlzel sınıflar framework sınıfları gibi tuumlm veri tuumlrleri ComVisibleattributersquou ile işaretlenmiş olmalıdır Net ortamındaki tuumlm tuumlrlerin nasıl youmlnetileceğini dışuygulamalar bilemezler Binlerce tuumlr olduğu hesaplanırsa bu tuumlrlerin hepsinin ComVisible ileişaretlenmesinin ne kadar zor olduğu da aşikacircrdır
Makalemizin başlarında temel veri tuumlrlerinin Net iccedilinde tanımlı olduğunu ifade etmiştik BuCTS adını almıştı ve pek ccedilok programlama dilinin bir arada ccedilalışabilmesi iccedilin son derece
BITS(Background Intelligent Transfer Service)ile sessiz sedasız download ) - 3 votesBir Kiosk ve CreateDesktop macerası - 3votes
Meta
GirişYazılar RSSYorumlar RSSWordPressorg
Etiketler-Liste
Absolute API Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread CreateToolHelp32SnapShotDTS EnumDesktopProc EnumDesktops FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoHacking Inheritance Interface JavaScriptMethod Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer Process Process32First Process32NextReqursion RTTI SetProcessWorkingSetSize SQLServer Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
VirtualFreeEx WaitForSingleObjectWriteProcessMemory
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Konumuzun Win32 ve Net olması muumlnasebeti ile kısa bir zaman sonra ccedilıkması beklenenyeni Delphi suumlruumlmuumlnuumln yani Delphi Weaverrsquoın ccedilok oumlnem verdiğim bir oumlzelliğini de sizlerlepaylaşmak istiyorum Delphi Weaverrsquoın oumlzelliklerinde listelenen ancak pek ccedilok kişinin dikkatinicezbetmeyen ldquoSeamless NET ltgt Native communicationrdquo oumlzelliği eminim pek ccedilok kişininnative uygulama geliştirebilecekleri ortamlara geccedilişinde etken olacaktır Peki nedir buldquoSeamless NET ltgt Native communicationrdquo oumlzelliği
Bu oumlzellik hakkında henuumlz net bir şey soumlz konusu değil Ancak neler yapılabileceğihususunda burayı ve bu haber grubunu takip etmenizi tavsiye edebilirim
Kısaca Win32 ortamında tamamen native kod geliştirirken Net framework fonksiyonalitesineherhangi bir COM bağımlılığı olmadan 100 delphi kodları ile erişmek isterseniz bu teknoloji
tam size goumlre demektir
Atozed Softwarersquoin uumlzerinde ccedilalıştığı CrossTalk isimli uumlruumln Delphi 5672009 altından NetFrameworkrsquoe erişebilmeniz iccedilin gereken tuumlm altyapıyı sağlayacak Projenin lideri olan Chad ZHover ile yapmış olduğum goumlruumlşme neticesinde oumlğrendiğim şey ise beni daha da sevindirdiCrosTalk uumlruumlnuuml Delphi Weawer ile birlikte gelecek Yani birkaccedil paragraf oumlnce belirttiğimizldquoSeamless NET ltgt Native communicationrdquo Delphi Weaver altındaki CrossTalk uumlruumlnuumlnuumlsimgeliyor
Bu yeni teknolojinin Delphirsquonin yuumlkselmesinde buumlyuumlk bir paydaya hizmet edeceği inancınıtaşıyorum Ayrıca Delphirsquonin hedefleri arasında Cross platform code compilation olduğunu dabilmenizi istiyorum İşte gerccedilek platform bağımsız kodlama bizlerin hizmetine sunulacakDelphirsquode yazdığımız uygulamaları Windows Linux yada MacOS gibi işletim sistemleriuumlzerinde ccedilalışır halde goumlreceğiz Elbette bu Netrsquoin yada Javarsquonın yaptığı gibi değil nativederleme ile yapılacak
Tuumlm bu anlatılanlar belki de hacircla afaki kalmış olabilir CrossTalkrsquoın yahut Delphi Weavericcedilindeki ldquoSeamless NET ltgt Native communicationrdquo oumlzelliğinin ne kadar oumlnemli olduğuanlaşılmamış da olabilir Bunun oumlnemini anlatabilmek iccedilin Win32primeden Netrsquoe erişmeyeccedilalışmak gerekir
Bu makalede Win32 ortamından Net Frameworkrsquoe erişeceğiz ve tuumlm bu zorlukları sizleringoumlzleri oumlnuumlne sereceğim Oumlncelikle Visual Studio 2005 ile bir Class Library(DLL)oluşturacağızBu DLLrsquoimiz SQL Server 2005primee erişim sağlayan bir kaccedil sınıftan ibaret olacakVe Bu DLLrsquoimizi Delphi 7 altından kullanacağız
O halde kodlamaya başlayabiliriz Oumlncelikle Visual Studiorsquomuzu accedilıyoruz ve yeni bir ClassLibrary projesi oluşturuyoruz Ardından MicrosoftSqlServerConnectionInfoMicrosoftSqlServerSmo MicrosoftSqlServerSmoEnum MicrosoftSqlServerSqlEnumlibraryrsquolerini referans olarak ekliyoruz Projemiz aşağıda goumlruumlnduumlğuuml gibi olacaktır
Son Yazılar
Yeni Veri Tipleri ve Operator OverloadingInterface Nedir Nerelerde ve Neden Kullanırız Derinlemesine Threading(3)SQLrsquode Benzerlik AlgoritmalarıhellipFull Text Searchinghellip
Kategoriler
Genel (4)IDE (1)
İşletim Sistemi (7)Programlama (43)
Net (3)C (2)Delphi (43)Grafik (2)Internet (4)Veritabanı (3)Win32 (6)
Takvim
Temmuz 2010
PDFmyURLcom
Bu makalenin can alıcı noktası Net ortamında yazdığımız kodlarımızın dışarıdan(Win32ortamından) kullanılabilmesi iccedilin COM programlamadan istifade edeceğimiz gerccedileğidir COMprogramlama kullanacağımıza goumlre dışarıdan erişime accedilacağımız tuumlm sınıfların ComVisibleattributersquou ile goumlruumlnuumlr hacircle getirilmesi gerekir Bir diğer oumlnemli nokta ise Class Libraryprojemizin oumlzelliklerinde gizlidir Bu oumlzel durumları aşağıdaki goumlrsellerden izleyebilirsiniz
Projemizin Application boumlluumlmuumlnden Assembly Information buttonuna tıklanarak yapılalacakayarlar
Temmuz 2010Pts Sal Ccedilar Per Cum Cts Paz
laquo Haz
1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31
Arşivler
Haziran 2010 (1)Mayıs 2010 (1)Nisan 2010 (3)Ağustos 2009 (1)Temmuz 2009 (2)Haziran 2009 (7)Mayıs 2009 (32)
Bağlantılar
Bir Tuumlrkccedile SevdalısıDelphi Tuumlrkiye ForumGuumlrcan OumlZTUumlRKMFatih KUumlCcedilUumlKKELEPCcedilEMemik YANIK KişiselMemik YANIKrsquoın GuumlnluumlğuumlNick HodgesSinan BARAN
PDFmyURLcom
Projemizin Build sayfasında yapılacak ayarlar
Zafer Ccedilelenk
Ziyaretccedili Bilgileri
Ziyaret 6 12073
Beğenilenler
Delphi 2010 (Weaver) ve TValue - 14 votesDerinlemesine Threading(3) - 13 votesDerinlemesine Threading(2) - 6 votesDerinlemesine Threading(1) - 6 votesYeni Veri Tipleri ve Operator Overloading - 4votesWin32 amp Net(Delphi-gtC) - 4 votesDelphi ve Google Maps API - 3 votesTThreadWaitFor Bug - 3 votesBITS(Background Intelligent Transfer Service)
PDFmyURLcom
Bu ayarların yapılmasına muumlteakip C tarafında SQL Server 2005primee bağlanan ve birveritabanının altındaki tuumlm tablolara erişim sağlayabileceğimiz kodları yazmaya başlamadanevvel anlatmamız gereken bir kaccedil husus daha var Bunlardan en oumlnemlisi Net frameworkplatformundaki her veri tuumlruumlnuuml COM ortamında kullanmanın zorluklarıdır Kullanmak istediğimizveri tuumlrleri ki bunların iccedilinde oumlzel sınıflar framework sınıfları gibi tuumlm veri tuumlrleri ComVisibleattributersquou ile işaretlenmiş olmalıdır Net ortamındaki tuumlm tuumlrlerin nasıl youmlnetileceğini dışuygulamalar bilemezler Binlerce tuumlr olduğu hesaplanırsa bu tuumlrlerin hepsinin ComVisible ileişaretlenmesinin ne kadar zor olduğu da aşikacircrdır
Makalemizin başlarında temel veri tuumlrlerinin Net iccedilinde tanımlı olduğunu ifade etmiştik BuCTS adını almıştı ve pek ccedilok programlama dilinin bir arada ccedilalışabilmesi iccedilin son derece
BITS(Background Intelligent Transfer Service)ile sessiz sedasız download ) - 3 votesBir Kiosk ve CreateDesktop macerası - 3votes
Meta
GirişYazılar RSSYorumlar RSSWordPressorg
Etiketler-Liste
Absolute API Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread CreateToolHelp32SnapShotDTS EnumDesktopProc EnumDesktops FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoHacking Inheritance Interface JavaScriptMethod Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer Process Process32First Process32NextReqursion RTTI SetProcessWorkingSetSize SQLServer Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
VirtualFreeEx WaitForSingleObjectWriteProcessMemory
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Bu makalenin can alıcı noktası Net ortamında yazdığımız kodlarımızın dışarıdan(Win32ortamından) kullanılabilmesi iccedilin COM programlamadan istifade edeceğimiz gerccedileğidir COMprogramlama kullanacağımıza goumlre dışarıdan erişime accedilacağımız tuumlm sınıfların ComVisibleattributersquou ile goumlruumlnuumlr hacircle getirilmesi gerekir Bir diğer oumlnemli nokta ise Class Libraryprojemizin oumlzelliklerinde gizlidir Bu oumlzel durumları aşağıdaki goumlrsellerden izleyebilirsiniz
Projemizin Application boumlluumlmuumlnden Assembly Information buttonuna tıklanarak yapılalacakayarlar
Temmuz 2010Pts Sal Ccedilar Per Cum Cts Paz
laquo Haz
1 2 3 45 6 7 8 9 10 1112 13 14 15 16 17 1819 20 21 22 23 24 2526 27 28 29 30 31
Arşivler
Haziran 2010 (1)Mayıs 2010 (1)Nisan 2010 (3)Ağustos 2009 (1)Temmuz 2009 (2)Haziran 2009 (7)Mayıs 2009 (32)
Bağlantılar
Bir Tuumlrkccedile SevdalısıDelphi Tuumlrkiye ForumGuumlrcan OumlZTUumlRKMFatih KUumlCcedilUumlKKELEPCcedilEMemik YANIK KişiselMemik YANIKrsquoın GuumlnluumlğuumlNick HodgesSinan BARAN
PDFmyURLcom
Projemizin Build sayfasında yapılacak ayarlar
Zafer Ccedilelenk
Ziyaretccedili Bilgileri
Ziyaret 6 12073
Beğenilenler
Delphi 2010 (Weaver) ve TValue - 14 votesDerinlemesine Threading(3) - 13 votesDerinlemesine Threading(2) - 6 votesDerinlemesine Threading(1) - 6 votesYeni Veri Tipleri ve Operator Overloading - 4votesWin32 amp Net(Delphi-gtC) - 4 votesDelphi ve Google Maps API - 3 votesTThreadWaitFor Bug - 3 votesBITS(Background Intelligent Transfer Service)
PDFmyURLcom
Bu ayarların yapılmasına muumlteakip C tarafında SQL Server 2005primee bağlanan ve birveritabanının altındaki tuumlm tablolara erişim sağlayabileceğimiz kodları yazmaya başlamadanevvel anlatmamız gereken bir kaccedil husus daha var Bunlardan en oumlnemlisi Net frameworkplatformundaki her veri tuumlruumlnuuml COM ortamında kullanmanın zorluklarıdır Kullanmak istediğimizveri tuumlrleri ki bunların iccedilinde oumlzel sınıflar framework sınıfları gibi tuumlm veri tuumlrleri ComVisibleattributersquou ile işaretlenmiş olmalıdır Net ortamındaki tuumlm tuumlrlerin nasıl youmlnetileceğini dışuygulamalar bilemezler Binlerce tuumlr olduğu hesaplanırsa bu tuumlrlerin hepsinin ComVisible ileişaretlenmesinin ne kadar zor olduğu da aşikacircrdır
Makalemizin başlarında temel veri tuumlrlerinin Net iccedilinde tanımlı olduğunu ifade etmiştik BuCTS adını almıştı ve pek ccedilok programlama dilinin bir arada ccedilalışabilmesi iccedilin son derece
BITS(Background Intelligent Transfer Service)ile sessiz sedasız download ) - 3 votesBir Kiosk ve CreateDesktop macerası - 3votes
Meta
GirişYazılar RSSYorumlar RSSWordPressorg
Etiketler-Liste
Absolute API Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread CreateToolHelp32SnapShotDTS EnumDesktopProc EnumDesktops FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoHacking Inheritance Interface JavaScriptMethod Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer Process Process32First Process32NextReqursion RTTI SetProcessWorkingSetSize SQLServer Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
VirtualFreeEx WaitForSingleObjectWriteProcessMemory
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Projemizin Build sayfasında yapılacak ayarlar
Zafer Ccedilelenk
Ziyaretccedili Bilgileri
Ziyaret 6 12073
Beğenilenler
Delphi 2010 (Weaver) ve TValue - 14 votesDerinlemesine Threading(3) - 13 votesDerinlemesine Threading(2) - 6 votesDerinlemesine Threading(1) - 6 votesYeni Veri Tipleri ve Operator Overloading - 4votesWin32 amp Net(Delphi-gtC) - 4 votesDelphi ve Google Maps API - 3 votesTThreadWaitFor Bug - 3 votesBITS(Background Intelligent Transfer Service)
PDFmyURLcom
Bu ayarların yapılmasına muumlteakip C tarafında SQL Server 2005primee bağlanan ve birveritabanının altındaki tuumlm tablolara erişim sağlayabileceğimiz kodları yazmaya başlamadanevvel anlatmamız gereken bir kaccedil husus daha var Bunlardan en oumlnemlisi Net frameworkplatformundaki her veri tuumlruumlnuuml COM ortamında kullanmanın zorluklarıdır Kullanmak istediğimizveri tuumlrleri ki bunların iccedilinde oumlzel sınıflar framework sınıfları gibi tuumlm veri tuumlrleri ComVisibleattributersquou ile işaretlenmiş olmalıdır Net ortamındaki tuumlm tuumlrlerin nasıl youmlnetileceğini dışuygulamalar bilemezler Binlerce tuumlr olduğu hesaplanırsa bu tuumlrlerin hepsinin ComVisible ileişaretlenmesinin ne kadar zor olduğu da aşikacircrdır
Makalemizin başlarında temel veri tuumlrlerinin Net iccedilinde tanımlı olduğunu ifade etmiştik BuCTS adını almıştı ve pek ccedilok programlama dilinin bir arada ccedilalışabilmesi iccedilin son derece
BITS(Background Intelligent Transfer Service)ile sessiz sedasız download ) - 3 votesBir Kiosk ve CreateDesktop macerası - 3votes
Meta
GirişYazılar RSSYorumlar RSSWordPressorg
Etiketler-Liste
Absolute API Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread CreateToolHelp32SnapShotDTS EnumDesktopProc EnumDesktops FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoHacking Inheritance Interface JavaScriptMethod Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer Process Process32First Process32NextReqursion RTTI SetProcessWorkingSetSize SQLServer Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
VirtualFreeEx WaitForSingleObjectWriteProcessMemory
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Bu ayarların yapılmasına muumlteakip C tarafında SQL Server 2005primee bağlanan ve birveritabanının altındaki tuumlm tablolara erişim sağlayabileceğimiz kodları yazmaya başlamadanevvel anlatmamız gereken bir kaccedil husus daha var Bunlardan en oumlnemlisi Net frameworkplatformundaki her veri tuumlruumlnuuml COM ortamında kullanmanın zorluklarıdır Kullanmak istediğimizveri tuumlrleri ki bunların iccedilinde oumlzel sınıflar framework sınıfları gibi tuumlm veri tuumlrleri ComVisibleattributersquou ile işaretlenmiş olmalıdır Net ortamındaki tuumlm tuumlrlerin nasıl youmlnetileceğini dışuygulamalar bilemezler Binlerce tuumlr olduğu hesaplanırsa bu tuumlrlerin hepsinin ComVisible ileişaretlenmesinin ne kadar zor olduğu da aşikacircrdır
Makalemizin başlarında temel veri tuumlrlerinin Net iccedilinde tanımlı olduğunu ifade etmiştik BuCTS adını almıştı ve pek ccedilok programlama dilinin bir arada ccedilalışabilmesi iccedilin son derece
BITS(Background Intelligent Transfer Service)ile sessiz sedasız download ) - 3 votesBir Kiosk ve CreateDesktop macerası - 3votes
Meta
GirişYazılar RSSYorumlar RSSWordPressorg
Etiketler-Liste
Absolute API Byte Arrays Class Reference
COM CreateDesktop CreateProcess
CreateRemoteThread CreateToolHelp32SnapShotDTS EnumDesktopProc EnumDesktops FunctionPointer GetCurrentProcess GetIconInfo GetKeyStateGetLastInputInfo GetProcessMemoryInfo GetStartupInfoHacking Inheritance Interface JavaScriptMethod Pointer Module32First Module32Next
OpenDesktop Persistance Pointer Procedure
Pointer Process Process32First Process32NextReqursion RTTI SetProcessWorkingSetSize SQLServer Sw itchDesktop TerminateProcess
Thread Untyped Parameters VirtualAllocEx
VirtualFreeEx WaitForSingleObjectWriteProcessMemory
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
faydalı bir unsurdu Ancak şimdi bizim iccedilin bir sorun gibi duruyor CTS iccedilinde tanımlı olan bazıbasit değişken tuumlrlerinin COM programlama da ComVisible ile goumlruumlnuumlr hacircle getirilmeden dekullanılabildiğini ifade etmek sanırım sizleri biraz rahatlatacaktır ancak yine de yeteri derecede rahatlamamış olmanız gerekir Ccediluumlnkuuml pek ccedilok projemizde bu projemizde olduğu gibiInteger String vb gibi basit veri tuumlrleri bizim iccedilin yeterli değildir
Net frameworkrsquouumln Smo kuumltuumlphanesi ile Sql Serverrsquoa erişebildiğini biliyoruz Ve bu Smokuumltuumlphanesi iccedilinde Sql Server iccedilindeki hemen hemen her nesne iccedilin tanımlanmış bir veri tipibulunmaktadır(Genellikle bir sınıf) Peki biz bu veritiplerini dışarıya nasıl sunacağız Smonamespacersquoininin tamamını mı ComVisible ile işaretleyeceğiz
Elbette hayır Bu son derece uğraştırıcı ve zor bir durum olurdu Bu sebeple Smo kuumltuumlphanesiiccedilinde ilgilendiğimiz sınıflara karar verecek ve bu sınıflar iccedilin bir arabirim yazacağız Ardından
bu arabirimi goumlruumlnuumlr kılacağız
Oumlrneğin biz bu uygulamamızda Sql Server 2005primee erişip herhangi bir veritabanının iccedilindeki tuumlmtablolsquolara ulaşmak istediğimize goumlre Smo namespacersquoindeki Table sınıfına ait sahte birinterface duumlzenleyeceğiz Gelin biraz da kodlayalım ki daha anlaşılır olsun
Delphi About
Auto Select All The Text For TCustomEdit OnMouse Click 29 Haziran 2010Memory Leak Notification in Delphi - ReportMemory Leak on Program Exit 27 Haziran2010PCRE Workbench - Regular Expression TestTool - Source Code Delphi Application 22Haziran 2010Deleting Dataset Records In a Loop - PollResults - Why All Records Are Not Deleted 21Haziran 2010Force TListViews Edit Mode using a KeyboardShortcut 17 Haziran 2010Implementing On Item Click Double Click forDelphis TListView control 16 Haziran 2010Run Your Delphi Application in Full Screen -Implement F11 - Full Screen 14 Haziran 2010Displaying Enumerated Properties in aSelectable List - Run-Time Enum Selection inDelphi 10 Haziran 2010How Do You Delete Dataset Records In aLoop 08 Haziran 2010Display Custom Hints for Status Bar Panels 07Haziran 2010
Sık Ziyaret Edilenler
Sayfa Home(16060)
Delphi ve Google Maps API(4132)
Delphi ve Google Maps API(1976)
0102030405060708091011121314151617181920212223242526272829
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServices namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Yukarıdaki kod oumlrneğimizde oumlncelikle SystemRuntimeInteropServices isimli alanı usingbloğuna eklediğimizi goumlruumlyorsunuz ComVisible attributersquounu kullanmak iccedilin bunu yapmak
Nedir bu Threadrsquolerden ccedilektiğimiz(1444)
Delphi amp Animated Flash Charts(Fusion Charts)(1179)
Delphi amp JavaScript Kardeşliği(936)
Delphi 2010 (Weaver) ve TValue(918)
Derinlemesine Threading(1)(889)
Derinlemesine Threading(2)(698)
Win32 amp Net(Delphi-gtC)(620)
Kategori Delphi(613)
Bir Kiosk ve CreateDesktop macerası(568)
Sayfa Hakkında(563)
TThreadWaitFor Bug(540)
Delphi 2010 (Weaver) ve TValue(530)
Oylama
Sitedeki makaleleri yararlı buluyor musunuz
Evet yararlı ama yetersiz
Evet son derece yararlı
Evet muumlkemmel
Hayır yararlı değil
2930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
public class SQLServerClass
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
durumundayız Ardından Smo namespacersquoi iccedilinde tanımlı olan Table isimli sınıfın ilgilendiğimizbirkaccedil tane propertyrsquosini tanımladığımız ITableInterface arabiriminin iccedilinde goumlruumlyorsunuz Buarabirim ComVisible ile işaretli durumda Biz ileride Delphi uumlzerinden yazdığımız C kodlarını
kullanırken arabirim referanslarına erişeceğiz
Ardından basit bir sınıf olan TableClass sınıfının ITableInterface arabirimini implemente ettiğinigoumlruumlyorsunuz Sizinde farkettiğiniz gibi bu sınıf ComVisible ile işaretlenmemiş Ccediluumlnkuuml biz busınıfa ilgili arabirimi uumlzerinden erişim sağlayacağız Dolayısı ile sınıfımız ITableInterfacersquoiimplemente ettiği iccedilin sadece arabirimi ComVisible ile goumlruumlnuumlr kılmak bizim iccedilin yeterliolacaktır
Buradaki anafikri anlamanız ccedilok oumlnemli Net framework altındaki kompleks yapıları COMortamından kullanabilmek iccedilin onların COM goumlruumlnuumlrluumlğuumlnuumln sağlanması gereklidir Biz buuygulamamızda Net frameworkrsquouumln Smo kuumltuumlphanesi iccedilindeki Table isimli sınıfı bu sebepledışarıya veremedik İlgili sınıfı(Table) ComVisible ile goumlruumlnuumlr kılamadığımız iccedilin biz de busınıfın sahte bir kopyasına bir arabirim oluşturduk ve o kopyayı goumlruumlnuumlr kıldık Meselenin oumlzuumlaslında sadece bu kadar Şimdi Sql Server 2005primee erişim sağlamasını duumlşuumlnduumlğuumlmuumlzsınıfımıza birer adet Connect ve Disconnect metodu yazmamız işimizi goumlrecek midir Evetserverrsquoa bağlanmak iccedilin serverrsquoın adına ve bağlantı şifresine ihtiyaccedil duyacağız ancak peki yahangi veritabanından ilgili tabloları alacağız
Bu noktada bizim iccedilin bir de Smo namespacersquoindeki Database sınıfına bir interfaceuydurmamız gerekecek Bu interfacersquode aşağıdaki gibi olacak
Hayır yararlı değil
Hayır hem yararlı değil hem de yetersiz
Hayır rezalet
Vote
View Results
Delphinin hangi suumlruumlmuumlnuuml kullanıyorsunuz
Delphi 5 yada oumlncesi
Delphi 6
Delphi 7
Delphi 8
Delphi 2005
Delphi 2006
Delphi 2007
Delphi 2009
Delphi 2010
Vote
View Results
001002003004005006007008009010011012013014015016017018019020021022023
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066067068069070071072073
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110
111112113114115116117118119120121122
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
return ActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(string TableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Yukarıda IDatabaseInterface tanımını ve bu interfacersquoi implemente eden sınıfın tanımınıgoumlruumlyorsunuz Biz ilgili veritabanının tablolarına TableFromName ve TableFromIndex metodlarıile erişeceğiz Bu durumda artık son sınıfımız olan en başta tanımını boş olarak goumlrduumlğuumlnuumlzSQLServerClass sınıfını yazmaya başlayabiliriz Ancak bu sınıfımız iccedilinde bir interfacetasarlamamız ve ComVisible ile goumlruumlnuumlr kılmamız gerekiyor Tanım aşağıdaki gibi olacak
123124125126127128129130131132
133134135
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject) hTablesAdd(tblNamenew TableClass(tbl))
01020304
0506070809101112131415161718192021222324252627
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseNamestring UserName string Password)
void Disconnect()
IDatabaseInterface Database get public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Goumlruumllduumlğuuml gibi son derece basit bir yapıya sahip olan SQLServerClass sınıfımız ISQLLibraryinterfacersquoini implemente etmiş ve ISQLLibrary ComVisible ile goumlruumlnuumlr hacircle getirilmişKodumuzun nihai hali aşağıdaki gibi olacaktır
2829303132333435363738394041424344454647484950515253545556
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
Disconnect()
001002003004005006007008009010011012013014015016
using Systemusing SystemCollectionsGenericusing SystemText using MicrosoftSqlServerManagementSmousing MicrosoftSqlServerManagementCommonusing SystemRuntimeInteropServicesusing SystemCollections namespace SQLClassLibrary
[ComVisible(true)]public interface ITableInterface
DateTime CreateDate get string Name get
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
016017018019020021022023024025026027028029030031032033034035036037038039040041042043044045046047048049050051052053054055056057058059060061062063064065066
string Name get long RowCount get int ColumnCount get int TriggerCount get
public class TableClass ITableInterface
private Table ActiveTable
public DateTime CreateDate
get
return ActiveTableCreateDate
public string Name
get
return ActiveTableName
public long RowCount
get
return ActiveTableRowCount
public int ColumnCount
get
return ActiveTableColumnsCount
public int TriggerCount
get
return ActiveTableTriggersCount
public TableClass(Table tbl)
ActiveTable = tbl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
066067068069070071072073074075076077078079080081082083084085086087088089090091092093094095096097098099100101102103104105106107108109110111112113114115116
~TableClass()
Nesneleri yok etmeyi unutma GC ye guumlvenme
[ComVisible(true)]public interface IDatabaseInterface
int ActiveConnections get DateTime CreateDate get DateTime LastBackupDate get string Name get double Size get
int StoredProcedureCount get int TableCount get int UserDefinedFunctionCount get int ViewCount get
ITableInterface TableFromName(string TableName)ITableInterface TableFromIndex(int Index)
public class DatabaseClass IDatabaseInterface
private Database ActiveDatabaseprivate Hashtable hTables
public int ActiveConnections
get
return ActiveDatabaseActiveConnections
public string Collation
get
return ActiveDatabaseCollationset
ActiveDatabaseCollation = valueActiveDatabaseAlter()
public DateTime CreateDate
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
162163164165
get
return ActiveDatabaseCreateDate
public DateTime LastBackupDate
get
return ActiveDatabaseLastBackupDate
public string Name
get
return ActiveDatabaseName
public double Size
get
return ActiveDatabaseSize
public int StoredProcedureCount
get
return ActiveDatabaseStoredProceduresCount
public int TableCount
get
return ActiveDatabaseTablesCount
public int UserDefinedFunctionCount
get
returnActiveDatabaseUserDefinedFunctionsCount
public int ViewCount
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
166167168169170171172
173174175176177178179180181182
183184185186187188189190191192193194195196197198199200201202203204
205206207208209210211212
get
return ActiveDatabaseViewsCount
public ITableInterface TableFromName(stringTableName)
return (ITableInterface)hTables[TableName]
public ITableInterface TableFromIndex(int Index)
ITableInterface Result = null
int iCounter = 0IDictionaryEnumerator TableEnum =
hTablesGetEnumerator()while (TableEnumMoveNext())
if (iCounter == Index)
Result = (TableClass)TableEnumValuebreak
iCounter += 1
return Result
public DatabaseClass(Database db)
ActiveDatabase = dbhTables = new Hashtable()
foreach (Table tbl in ActiveDatabaseTables)
if (tblIsSystemObject)hTablesAdd(tblName new TableClass(tbl))
[ComVisible(true)]public interface ISQLLibrary
bool Connect(string ServerName string DatabaseName PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
string UserName string Password)void Disconnect()
IDatabaseInterface Database get
public class SQLServerClass ISQLLibrary
private Server srvprivate IDatabaseInterface CurrentDatabase
public IDatabaseInterface Database
get
return CurrentDatabase
public bool Connect(string ServerNamestring DatabaseNamestring UserNamestring Password
)
bool Result = false
srv = new Server(ServerName)srvConnectionContextLoginSecure = falsesrvConnectionContextLogin = UserNamesrvConnectionContextPassword = PasswordResult = true
if (Result)
Database db = srvDatabases[DatabaseName]CurrentDatabase = new DatabaseClass(db)
return Result
public void Disconnect()
srvConnectionContextDisconnect()
~SQLServerClass()
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Şimdi Visual Studio ortamında Ctrl+Shift+B tuşlarına basarak yada Build menuumlsuumlnden Buildseccedileneklerinden birisini seccedilerek derleme işlemi yaptığımızda Delphi tarafına geccedilmeye hazırızdemektir İlgili DLLrsquoimiz artık projemizi kaydettiğimiz yerde oluşturulduğu gibi projeayarlarından Com goumlruumlnuumlrluumlğuumlnuuml işaretlediğimiz iccedilin bu DLL aynı zamanda COM sistemineRegister edilmiş durumdadır Eğer elle register işlemi yapmak istiyorsanız o halde regasmkullanmak durumunda kalacaksınız Ancak şu anda bu işi Visual Studio bizim iccedilin yapmışdurumda Delphirsquomize geccedilip yeni bir proje accedilalım ve ProjectImport Type Library adımındanaşağıdaki goumlrselde goumlrebileceğiniz gibi ilgili DLLrsquoimizi listeden bulalım ve Create Unitrsquoebasalım
262263264265266
Disconnect()
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
SQLClassLibrary_TLBpas isimli dosyamız artık oluşmuş durumda Delphi oumlrneğimiz iseaşağıdaki gibi olacaktır
01020304050607080910
uses SQLClassLibrary_TLBprocedure TForm1Button1Click(Sender TObject)var
SqlServer ISQLLibrarybegin
SqlServer = CoSQLServerClassCreate as ISqlLibrarySqlServerConnect(TUGRUL BENIMDB sa )
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
15 Comments
Ferruh Koroglu on Haziran 21st 2009
Ccedilok guumlzel bir makale Tuğrul HocamEline sağlık
Tuğrul HELVACI on Haziran 21st 2009
Teşekkuumlr ederim beğenmenize sevindim
Olcay DAĞLI on Haziran 23rd 2009
Hocam yine guumlzel bir makale daha eline sağlıkhellip)
Oumlzetlemek gerekir ise Delphi Win32 projelerinde herhangi bir Net framework kuumltuumlphanesine
erişebilir ve onu kullanabilirsiniz Ancak ComVisible goumlruumlnuumlrluumlk durumuna dikkat ederek Sanırım şimdi makalemin başlarında belirttiğim CrossTalk ve Delphi Weaver iccedilinde Neterişimi oumlzelliklerinin ne derece oumlnemli olduğu daha accedilıktır
Saygılar sevgiler
[Translate]
11121314
15
16171819
ShowMessage(Format(Kayıt Sayısı=d Kolon Sayısı=d
[SqlServerDatabaseTableFromName(BenimTablom
)RowCountSqlServerDatabaseTableFromName(BenimTablom
)ColumnCount]) )
SqlServerDisconnectSqlServer = nil
end
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Tuğrul HELVACI on Haziran 23rd 2009 Teşekkuumlr ederim Olcay okuyan goumlzlerine sağlık
Nihal Alıcı on Ağustos 7th 2009
Ben bu makaleni yeni okudum Tuğrul gerccedilekten ccedilok faydalı guumlzelbir yazı olmuş Hani tam da ldquoDelphi ile hiccedil alakam kalmıyor artıkrdquodediğim zamanlarda yine aklıma bir kurt duumlşuumlrduumln yani ArtıkCodeGear bloglarını bile okumaz olmuştum tekrar başlasam mı
acaba Eline emeğine sağlık
Tuğrul HELVACI on Ağustos 7th 2009
Teşekkuumlr ederim nihal beğenmene sevindim Delphi biz onu bilerekve kasten oumllduumlrmeye teşebbuumls etmediğimiz suumlrece oumllecek gibi
goumlruumlnmuumlyor Bende yaşasın diye muumlmkuumln mertebe elimdengeleni nacizane yapma gayretindeyim Sen oku oku Delphi bloglarını
yine
Nurullah on Nisan 13th 2010
Hocam eline sağlık ccedilok guumlzel bir makale yanlız benim bir sorunum
var
SQLServerClass sınıfının tek constructor ı var olsun oda
Public SQLServerClass(string cnnString)
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
gibi olsun benim elimde bunun gibi bir oumlrnek var ve ben constructorın parametresini goumlnderemediğim iccedilin Class not registered hatasıalıyorum Bununla ilgili bir ccediloumlzuumlmuumln var mı
Tuğrul HELVACI on Nisan 13th 2010
Şu an deneme imkanım yok ama benim yaptığım gibi parametresizbir constructor kullanıp onun yerine ilgili parametreleri Connect gibibir metoda geccedilmeniz muumlmkuumln değil mi
Nurullah ERCANon Nisan 13th 2010
Valla DLL i yazan bizim muumlşterimiz Axapta entegrasyonu iccedilinyazılmış bir dll aslında soumlylediğinizin benzerini talep ettim Ama
muumlşteri derki değiştiremyiz Accedilıkcası en net kaynak bu duumln
akşamdan bu yana ara ara sonuccedil yok Ccedilıldırmak uumlzereyim Yardımcı olabilirsen ccedilok sevinirim
Tuğrul HELVACI on Nisan 13th 2010
Mail adresimi ziyaretccedili defterinden bulabilirsiniz Oraya konu ileilgili muumlmkuumln olan en detaylı accedilıklamayı iccedileren bir mail atabilirsenizeve gittiğimde elimden geldiğince yardımcı olabilirim
Nurullah ERCANon Nisan 13th 2010
Teşekkuumlrler hocam
Barış Kırgıccedil Hocam Merhaba
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Barış Kırgıccedil on Mayıs 6th 2010 Oumlncelikle harika bir kaynak sağlamışsınız teşekkuumlr ederim
Yukarıda dediğiniz gibi herşeyi yaptım Kendi yaptığım dll de hiccedilsorun yok
Aynı işi muumlşterinden istedim ve oda yaptı ve bana ldquoTLBrdquo filegoumlnderdi Register ettim fakatldquoClass not registeredrdquo hatası alıyorum
Sizce neden olabilir
Tuğrul HELVACI on Mayıs 6th 2010
Merhaba Barış bey acaba muumlşteriniz sınıf tasarımında ilgiliinterfacersquoleri COMVisible ile işaretlememiş olabilir mi Muumlşterinizin yazmış olduğu class libraryrsquoi bana mail ileulaştırabilirseniz daha net bir yorum yapabilirim Normalde sizindebileceğiniz uumlzere Net class libraryrsquoleri regasm yardımcı aracı ile ilgilisisteme kayıt ettirilirler ardından başka dillerde COMprogramlamanın kullanımına accedilık hale gelirler regasm ile sistemekayıt ettirilmemiş dllrsquoler iccedilin sınıf kaydedilmemiş(Class notregistered) gibi bir hata alabilirsiniz Muumlşterinizden ilgili dllrsquoi isteyipregasm ile bu dllrsquoi sisteme kayıt edip ardından Delphirsquoden importtype library ile import etmeyi denediniz mi
Tuumlm bunları denediğiniz halde hacircla aynı hata ile karşılaşıyorsanız ozaman başta belirttiğim gibi ilgili dllrsquoi yada muumlmkuumlnse dllrsquoin ckaynak kodlarını yollayabilirseniz fikir yuumlruumltmekte daha başarılıolabilirim
Taner İNEKCcedilİ on Mayıs 31st 2010
Hocam oumlncelikle verdiğiniz değerli bilgiler iccedilin ccedilok teşekkuumlrlerhellip
Ben yukarıda verdiğiniz tuumlm adımları visual basic ile uyguladım dlloluşturdum register ettim delphi ye import u gerccedilekleştirdimProjeme oluşturduğum unit i ekledim ancak ki visual basictayarattığım class taki proseduru mu gorebılıyorum ancakki projeyıderleyıpcalıstırdıgımda access violation hatası alıyorum sizce sebebi neolabilir
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
yardımcı olabilirseniz ccedilok sevinirim şimdiden teşekkuumlrler
Tuğrul HELVACI on Mayıs 31st 2010
Access Violation ccedilok genel bir hatadır Sıklıkla henuumlzoluşturulmamış(hafızada yer ayırılmamış) nesnelere erişimlerdeyada Free edilmiş ama hacircla hafızada anlamsız bir yeri goumlsterenişaretccedililer kullanıldığında karşılaşırsınız Soruna bu accedilıdan birbakmanızı oumlnerebilirim
Name (required)
Mail (required)
Website
Share your comment
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom
Son YorumlarYorumunuza teşekkuumlrler Aslında operatoumlr aşırıyuumlklemenin sınıf larda pek bir avantaj by TuğrulHELVACI
Merhaba Ben ilk olarak merakımdan dolayı uğraştığımC++ dilinde goumlrmuumlştuumlm Operatoumlr by Zafer Ccedilelenk
Merhaba makaleyi yazdığım zaman kodlarda bir sorunyoktu Belki Google Mapsde bir şeyler by TuğrulHELVACI
Merhaba Kodlarda bir sorun mu var yoksa ggogle buhizmeti durdurdu mu Sadece boş bir by ahmet
Programcı arkadaşların daha fazla takıldığı bir yerdeyazsa idiniz mesajınızı daha by Tuğrul HELVACI
Tuğrul Bey Yeri Burasımıdır Bilmiyorum O nedenlehata ediyorsam oumlzuumlr dilerm bir iş ilanı by geyikben
Teşekkuumlrler ) by Tuğrul HELVACI
Yeni EklenenlerYeni Veri Tipleri ve Operator Overloading
Interface Nedir Nerelerde ve Neden Kullanırız
Derinlemesine Threading(3)
SQLrsquode Benzerlik Algoritmalarıhellip
Full Text Searchinghellip
Delphi 2010 (Weaver) ve TValue
Derinlemesine Threading(2)
LinklerBir Tuumlrkccedile Sevdalısı - Taha EKREM
Delphi Tuumlrkiye Forum
Guumlrcan OumlZTUumlRK - Guumlrcan OumlZTUumlRK
MFatih KUumlCcedilUumlKKELEPCcedilE
Memik YANIK Kişisel
Memik YANIKrsquoın Guumlnluumlğuuml
Nick Hodges
Sinan BARAN
Copyright copy 2009 Delphi Programming Pow ered by WordPress | Increase Traff ic w ith Traff icWhirl
PDFmyURLcom