Programlama yapalım ve Öğrenelim. - Delphi Eğitim84
  Ana Sayfa
  .NET Eğitim Notları
  Visual C# .NET Örnek Kodları
  VisualBasic.NET Örnek Kodları
  J# Örnekleri
  ASP.NET Örnek Kodları
  Delphi Eğitim
  => Delphi Eğitim1
  => Delphi Eğitim2
  => Delphi Eğitim3
  => Delphi Eğitim4
  => Delphi Eğitim5
  => Delphi Eğitim6
  => Delphi Eğitim7
  => Delphi Eğitim8
  => Delphi Eğitim9
  => Delphi Eğitim10
  => Delphi Eğitim11
  => Delphi Eğitim13
  => Delphi Eğitim14
  => Delphi Eğitim15
  => Delphi Eğitim16
  => Delphi Eğitim17
  => Delphi Eğitim18
  => Delphi Eğitim19
  => Delphi Eğitim20
  => Delphi Eğitim21
  => Delphi Eğitim22
  => Delphi Eğitim23
  => Delphi Eğitim24
  => Delphi Eğitim25
  => Delphi Eğitim26
  => Delphi Eğitim27
  => Delphi Eğitim28
  => Delphi Eğitim29
  => Delphi Eğitim30
  => Delphi Eğtim31
  => Delphi Eğitim32
  => Delphi Eğitim33
  => Delphi Eğitim34
  => Delphi Eğitim35
  => Delphi Eğitim36
  => Delphi Eğitim37
  => Delphi Eğitim38
  => Delphi Eğitim39
  => Delphi Eğitim40
  => Delphi Eğitim41
  => Delphi Eğitim42
  => Delphi Eğitim43
  => Delphi Eğitim44
  => Delphi Eğitim45
  => Delphi Eğitim46
  => Delphi Eğitim47
  => Delphi Eğitim48
  => Delphi Eğitim49
  => Delphi Eğitim50
  => Delphi Eğitim51
  => Delphi Eğitim52
  => Delphi Eğitim53
  => Delphi Eğitim54
  => Delphi Eğitim55
  => Delphi Eğitim56
  => Delphi Eğitim57
  => Delphi Eğitim58
  => Delphi Eğitim59
  => Delphi Eğitim60
  => Delphi Eğitim61
  => Delphi Eğitim62
  => Delphi Eğitim63
  => Delphi Eğitim64
  => Delphi Eğitim65
  => Delphi Eğitim66
  => Delphi Eğitim67
  => Delphi Eğitim68
  => Delphi Eğitim69
  => Delphi Eğitim70
  => Delphi Eğitim71
  => Delphi Eğitim72
  => Delphi Eğitim73
  => Delphi Eğitim74
  => Delphi Eğitim75
  => Delphi Eğitim76
  => Delphi Eğitim77
  => Delphi Eğitim78
  => Delphi Eğitim79
  => Delphi Eğitim80
  => Delphi Eğitim81
  => Delphi Eğitim82
  => Delphi Eğitim83
  => Delphi Eğitim84
  => Delphi Eğitim85
  => Delphi Eğitim86
  => Delphi Eğitim87
  => Delphi Eğitim88
  => Delphi Eğitim89
  => Delphi Eğitim90
  => Delphi Eğitim91
  => Delphi Eğitim92
  => Delphi Eğitim93
  => Delphi Eğitim94
  => Delphi Eğitim95
  => Delphi Eğitim96
  => Delphi Eğitim97
  => Delphi Eğitim98
  => Delphi Eğitim99
  => Delphi Eğitim100
  => Delphi Eğitim101
  => Delphi Eğitim102
  => Delphi Eğitim103
  => Delphi Eğitim104
  => Delphi Eğitim105
  => Delphi Eğitim106
  => Delphi Eğitim107
  => Delphi Eğitim108
  => Delphi Eğitim109
  => Delphi Eğitim110
  => Delphi Eğitim111
  => Delphi Eğitim112
  => Delphi Eğitim113
  => Delphi Eğitim114
  => Delphi Eğitim115
  => Delphi Eğitim116
  => Delphi Eğitim117
  => Delphi Eğitim118
  => Delphi Eğitim119
  => Delphi Eğitim120
  => Delphi Eğitim121
  => Delphi Eğitim122
  => Delphi Eğitim123
  => Delphi Eğitim124
  => Delphi Eğitim125
  => Delphi Eğitim126
  => Delphi Eğitim127
  => Delphi Eğitim128
  => Delphi Eğitim129
  => Delphi Eğitim130
  => Delphi Eğitim131
  => Delphi Eğitim132
  => Delphi Eğitim133
  => Delphi Eğitim134
  => Delphi Eğitim135
  => Delphi Eğitim136
  => Delphi Eğitim137
  => Delphi Eğitim138
  => Delphi Eğitim139
  => Delphi Eğitim140
  => Delphi Eğitim141
  => Delphi Eğitim142
  => Delphi Eğitim143
  => Delphi Eğitim144
  => Delphi Eğitim145
  => Delphi Eğitim146
  => Delphi eğitim147
  => Delphi Eğitim148
  => Delphi Eğitim149
  => Delphi Eğitim150
  => Delphi Eğitim151
  => Delphi Eğitim152
  => Delphi Eğitim153
  => Delphi Eğitim154
  => Delphi Eğitim155
  => Delphi Eğitim156
  => Delphi Eğitim157
  => Delphi Eğitim158
  => Delphi Eğitim159
  => Delphi Eğitim160
  => Delphi Eğitim161
  => Delphi Eğitim162
  => Delphi Eğitim164
  => Delphi Eğitim165
  => Delphi Eğitim166
  => Delphi Eğitim167
  => Delphi Eğitim168
  => Delphi Eğitim169
  => Delphi Eğitim170
  => Delphi Eğitim171
  => Delphi Eğitim172
  => Delphi Eğitim173
  => Delphi Eğitim174
  => Delphi Eğitim175
  => Delphi Eğitim176
  => Delphi Eğitim177
  => Delphi Eğitim178
  => Delphi Eğitim179
  => Delphi Eğitim180
  => Delphi Eğitim181
  => Delphi Eğitim182
  => Delphi Eğitim183
  => Delphi Eğitim184
  => Delphi Eğitim185
  => Delphi Eğitim186
  => Delphi Eğitim187
  => Delphi Eğitim188
  => Delphi Eğitim189
  => Delphi Eğitim190
  => Delphi Eğitim191
  => Delphi Eğitim192
  => Delphi Eğitim193
  => Delphi Eğitim194
  => Delphi Eğitim195
  => Delphi Eğitim196
  => Delphi Eğitim197
  => Delphi Eğitim198
  => Delphi Eğitim199
  => Delphi Eğitim200
  => Delphi Eğitim201
  => Delphi Eğitim202
  => Delphi Eğitim203
  => Delphi Eğitim204
  => Delphi Eğitim205
  => Delphi Eğitim206
  => Delphi Eğitim207
  => Delphi Eğitim208
  => Delphi Eğitim209
  => Delphi Eğitim210
  => Delphi Eğitim211
  => Delphi Eğitim212
  => Delphi Eğitim213
  => Delphi Eğitim214
  => Delphi Eğitim215
  => Delphi Eğitim216
  => Delphi Eğitim217
  => Delphi Eğitim218
  => Delphi Eğitim219
  => Delphi Eğitim220
  => Delphi Eğitim221
  => Delphi Eğitim222
  => Delphi Eğitim223
  => Delphi Eğitim224
  => Delphi Eğitim225
  => Delphi Eğitim226
  => Delphi Eğitim227
  => Delphi Eğitim228
  => Delphi Eğitim229
  => Delphi Eğitim230
  => Delphi Eğitim231
  => Delphi Eğitim232
  => Delphi Eğitim233
  => Delphi Eğitim234
  => Delphi Eğitim235
  => Delphi Eğitim236
  => Delphi Eğitim237
  => Delphi Eğitim238
  => Delphi Eğitim239
  => Delphi Eğitim240
  => Delphi Eğitim241
  => Delphi Eğitim242
  İletişim

string bir alanı süzdürmek

arkadaşlar lütfen acil yardım

 

access veri  tabanında bir tablo içerisinden text'e girilen bir string değeri sql kodları ile süzdürmeye  çalışıyorum hata veriyor yazmış olduğum kodu inceleyip yardım edermisiniz

 

With AdoQuery Do

 begin

   with sql do

     Begin

        Clear;

        Close;

        Add('select *');

        Add('from ATTablo');

        Add('Where Adi='+Edit1.text);

        Open;

     end;

 end;

burada Grid1 içerisinde göstermesi gerekiyor ama edit1 içerindeki yazılan bilginin karşılığı bulunamadı şeklinde hata veriyor bu kod numerik alanlar için süzdürme yaptığımda işliyor

açil yardım gerekiyor

 

Delphi - .....................................

 

thread olayının en basit kullanım örneği

var

  Form1: TForm1;

  Thread1ID, Thread1Handle : Cardinal;

 

Procedure Thread1;SafeCall;

begin

    //buraya çalıştığı zaman programınızda duraklamaya neden olan

    //işlevlerin kodlarını yazın...

    //örneğin ben ftp ye upload yaparken program da diğer işlevler

    //beklemeye geçiyodu böle bir yapı ile sorunumu çözdüm..

end;

 

//başlatacağınız zaman bu kodu kullanacaksınız sadece....

Thread1Handle := CreateThread(nil, 1024, @Thread1,nil,0,Thread1ID);

 

//gerek duyarsanızda diğer işlevler için:

 

//durdurmanız gerekirse aşağıdakini...

TerminateThread(Thread1Handle,0);

//askıya almak için bunu

SuspendThread(Thread1Handle);

//askıya lındığı zaman yeniden devam için..

ResumeThread(Thread1Handle);

 

timereality@hotmail.com

 

Delphi - .....................................

 

thread olayının en basit kullanım örneği

var

  Form1: TForm1;

  Thread1ID, Thread1Handle : Cardinal;

 

Procedure Thread1;SafeCall;

begin

    //buraya çalıştığı zaman programınızda duraklamaya neden olan

    //işlevlerin kodlarını yazın...

    //örneğin ben ftp ye upload yaparken program da diğer işlevler

    //beklemeye geçiyodu böle bir yapı ile sorunumu çözdüm..

end;

 

//başlatacağınız zaman bu kodu kullanacaksınız sadece....

Thread1Handle := CreateThread(nil, 1024, @Thread1,nil,0,Thread1ID);

 

//gerek duyarsanızda diğer işlevler için:

 

//durdurmanız gerekirse aşağıdakini...

TerminateThread(Thread1Handle,0);

//askıya almak için bunu

SuspendThread(Thread1Handle);

//askıya lındığı zaman yeniden devam için..

ResumeThread(Thread1Handle);

 

Delphi - .....................................

 

11.000 Delphi Code - Dev arşiv - Yenilendi

Drony Code spider ile taranarak dünyadaki forum ve tips sitelerinden toplanmış yaklaşık 11.000 Delphi code.. Umarım çalışmalarınızda yardımcı olur..

iyi günler.

 

 

http://www.unreadedpost.com/viewtopic.php?t=3454

 

Delphi - .....................................

 

Delphi Kodbankası

Evet Arkadaslar Benim kendim yaptığım Bir Tane Delphi Kodbankasını Sizlerle Paylaşmak istiyorum. Çook Basit belki ama benim ilk projem olduğu için baya güzel görünüyor... umarım delphi ile uğrasan arakadasalrın işine yarar

 

http://www.pcmekani.com/dosyalar/pcmekani.kodbank.rar

 

Delphi - .....................................

 

1270 Delphi / Türkçe Kitabı

Yaklaşık 1270 sayfadan olusan pdf formatında ZİRVEDEKİ BEYİNLER NİHAT DEMİRLİ - YÜKSEL İNAN tarafından hazırlanan eşsiz bir kaynaktır.

 

Kitap piyasada 50 - 80 YTL arasında fiyat aralıklarında satılmaktadır.

 

 

 

İlgilenenlere duyurulur.

 

Saygılar.

 

 

Alıntı:

http://rapidshare.de/files/8877109/delphi.zip.html 

 

 

 

Alıntıdır..

 

Delphi - .....................................

 

Titreşim

// titreşim örneği

// formu veya bir kontrolü titretin

 

procedure NudgeWindow(theWinControl: TWinControl; noN: integer; wSound: Boolean);

var

  i, j, A, AK2: integer;

  orgLeft, orgTop: integer;

  P: array[1..9] of TPoint;

begin

  orgLeft := theWinControl.Left;

  orgTop  := theWinControl.Top;

  A := 5; AK2 := Round(A * sqrt(2));

  // sekizgen koordinatlari

  P[1] := Point(0, A);

  P[2] := Point(-AK2, -AK2);

  P[3] := Point(A, 0);

  P[4] := Point(-AK2, AK2);

  P[5] := Point(0, -A);

  P[6] := Point(AK2, AK2);

  P[7] := Point(-A, 0);

  P[8] := Point(AK2, -AK2);

  P[9] := Point(0, A);

  // uses kismina MMSystem

  if wSound then

    PlaySound(PChar('SES'), 0, SND_RESOURCE or SND_ASYNC);

 

  for j:=1 to abs(noN) do

  begin

    theWinControl.Left := orgLeft;

    theWinControl.Top  := orgTop;

    for i:=1 to 9 do

    begin

      theWinControl.Left := theWinControl.Left + P[i].X;

      theWinControl.Top  := theWinControl.Top + P[i].Y;

      theWinControl.Update;

      Sleep(25);  //

    end;

  end;

  theWinControl.Left := orgLeft;

  theWinControl.Top := orgTop;

end;

 

/// kullanimi

NudgeWindow(Form1, 3, true);

 

Delphi - .....................................

 

Sayın Tansu TÜRKOĞLU

Öncelikle burada böyle bir konu açtığım için herkesten özür diliyorum ama kendimi burda bu konuyu açmak zorunda hissettim...

 

Kodbank ın daha doğrusu delphiturk.com gerçekten iyi bir süzgeçten geçirilmeye ihtiyacı

var bu işi yapabilcek arkadaşlar da sitede mevcut site de en çok kod göndren ve en çok

online olan arkaşlardan en az 5 tane admin seçilse ve onlar da günlük 30 dk ayırsalar

bu gereksiz kod ve soruları silseler gerçekten kodbak çok temiz bir kodbank olur olur

ve ayrıca database de de biraz da olsa şişme önlenmiş olur.... bu sadece size sunulmuş bir öneri...  eminim ki sitede ki tüm arkadaşlar bu konuda aynı fikri düşünüyordur...

 

Herkesten tekrar bu konuyu açtığım için özür diliyorum...

 

Çalışmalarınızda Başarılar Dilerim...

 

Saygılarımla...

 

Mehmet KOCABAŞ

 

mehmetkocabas2@hotmail.com

 

Delphi - .....................................

 

YARDIM PLS

ben media palyerim için osciloscope

          yapmak itiyorum ama kodu bir turlu bulamadım yardım edebilirmisiniz lütfenn!!!

 

Delphi - .....................................

 

C NIN DELPHI KARSILIKLARI (CEVIRI) - C KODLARINI ANLAYABILME

HWND CreateWindow(

    LPCTSTR lpClassName,  // pointer to registered class name

    LPCTSTR lpWindowName, // pointer to window name

    DWORD dwStyle,    // window style

    int x,            // horizontal position of window

    int y,            // vertical position of window

    int nWidth,       // window width

    int nHeight,      // window height

    HWND hWndParent,  // handle to parent or owner window

    HMENU hMenu,      // handle to menu or child-window identifier

    HANDLE hInstance, // handle to application instance

    LPVOID lpParam    // pointer to window-creation data

   );

 

 

İlk parametre adı lpClassName ve tipi LPCTSTR dir.Burada bir çok değişkende kullanılan "Macar rakam işaret sistemi / Hungarian notation" sistemi kullanılmıştır.lpClassName değişkeninde ilk 2 karakter "long pointer" kısaltmasıdır.dwStyle değişkenindeki dw  "DWORD" tipini, nWidth değişkeninde de n Short int tipini (16  bitte "n" Short int iken  32 bitte integer dir) belirtir.

 

Aşağıda C de kullanılan Macar kısaltmaları'nın listesi bulunmaktadır.

 

 

Prefix      C language Data Type

b           Boolean

by          Byte

c           Char

cx/cy             short Int used as size

dw          DWORD

fn          Function

h           Handle

i           Integer

l           Long

n           n bir tipi göstermez.Genelde değişekninsayı ile  ilgiliolduğunu belirtirrneğin            

            metiniçinddeki karakter  sayısı , ddizidekieleman sayısını vs.

p           Pointer to address of variable

s           string

sz          ASCI null terminated string

w           Word

x, y        Short Int used as coordinates

 

 

Çoğu API fonksiynunda "lp" ile karşılaşacaksınız.Bu "Pointer" (16  bit Word tipi - 2 byte) ile "Long Pointer" i (32 bit DWord tipi - 4 byte) karıştırmamak içindir.32 bit Windows sistemlerde bunun bir önemi yoktur çünkü tüm  pointerlar 32 bit (4 byte DWord) tir.

 

 

 

Aşağıda bazı C tiplerinin Delphi karşılıkları listelenmektedir

 

C type                             Delphi type

HANDLE                                   THandle == LongWord (Cardinal)

HWND                               THandle == LongWord (Cardinal)

HMENU, HICON, HBITMAP, HFONT, HBRUSH, HPEN     THandle == LongWord (Cardinal)

BYTE                               Byte

SHORT                                    SmallInt

INT                                Integer

WORD                               Word

DWORD                                    LongWord (Cardinal)

LONG                               Integer

LONGLONG                           Int64

UINT                               LongWord; Cardinal (aşağıdaki notu okuyun)

ASCI null terminated string              PAnsiChar or PChar

LPSTR, LPCTSTR                           PAnsiChar

ULONG                                    Cardinal (aşağıdaki notu okuyun)

BOOLEAN                            Boolean

BOOL                               LongBool

LPVOID, PSID                             Pointer

LCID                               DWORD, LongWord (Cardinal)

LANGID                                   Word

UCHAR                                    Byte

 

 

Not: C deki Unsigned Integer (UINT) gerçek bir Delphi karşılığı yoktur.C deki UINT 0 dan 4,294,967,294 arasında bir Cardinal değeri ve -1 negatif değerini alabilir.Delphi UINT'tin bir LongWord (Cardinal) olduğunu söylüyor ama UINT hex olarak $FFFFFFFF (maksimum DWord) değerini aldığında Windows sistemlerde "-1" manasına geliyor.

UINT C de işaretsiz int olarak tanımlıdır.Microsoft UINT_MAX sabitini 4,294,967,295 olarak belirtiyor ve bu durumda -1 e yer kalmıyor.Microsoftun -1 kullanmasının muhtemelen iki sebebi vardır: İlk olarak C derleyicisi işaretsiz tiplerde overflow ve underflow (taşmaları) umarsamayacaktırkinci olarak "4294967295" yada "0xffffffff" yazmaktansa -1 yazmak daha kolaydır , özellikle değişkenin asıl boyu bilinmediğinde ve değişime eğimli ise.64 bit tipte değişkenin gerçek değeri 4294967295 olamayacatır."-1" in manası değişken boyuna bakmaksızın bütün bitler 1 demektir ,

 

 

C deki birkaç veri tipi için Delphide sadece bir veri tipinin olması kafanızı karıştırabilirrneğin DWORD , UINT , HWDN , ULONG ve LCID" hepsi Delphi'de Cardinal tipidir.Karışıklığı önlemek için bir çok Delphi kodunda Cardinal yerine "LongWord" , integer yerine de "LongInt" kullanılmıştır.C veri tipleri ile başınız dertte ise kodunuzda C veri tiplerini kullanabilirsiniz.Bunların gerekli olduğu anlaşılması üzerine windows.pas ta tanımlanmışlardır.

 

 

windows.pas ta aşağıdaki şekilde tanımlıdırlar :

 

type

  DWORD = LongWord;

  LONG = Integer;

  LCID = DWORD;

  SHORT = Smallint;

 

 

Çoğu parametre pointer tipinde olması nedeni ile pointerlarda windows.pas'ta tanımlıdır.

Aşağıda çok kullanılan bazı pointerların windows.pas taki tanımları bulunmaktadır.

 

PByte = ^Byte;

PLongint = ^Longint;

PInteger = ^Integer;

PINT = ^Integer;

PLongWord = ^LongWord;

PSmallInt = ^Smallint;

PDWORD = ^DWORD;

LPDWORD = PDWORD;

PDouble = ^Double;

PShortInt = ^ShortInt;

 

 

 

 

--BOOLEAN ve BOOL , LongBoolean nedir?

Birçok API fonksiyonunda BOOL tipinde (veri tipi görebilirsiniz.BOOL 32 bit "Long" Boolean tipidir. (4 byte lık bir değişkenin 32 bit hafıza bloğuna sığması için).Delphi derleyicisi çoğu zaman LongBool tipini normal Boolean tipi (True / False) olarak değerlendirecektir ve Windows LongBoolean değişkeninin sadece True/False değerini kullanacaktır.Kullanım amacı bu olmasa da LongBoolean değişkeni bazen diğer 3 byte'ında başka bilgiler tutabilir.

API Yardımında (genelde Return değerleri için) integer yada cardinal tiplerini "True/False" için kullanıldığı görülür.Bu demektir ki False için 0 ve True için 1 değeri atanır.(Nadirende olsa tersini görebilirsiniz , bir Boolean değişkenin 1 yada 0 için kullanılması gibi.)

 

 

---Veri Yapısı

Delphide "Record" terimi veri elemanlarının kolleksiyonları için kullanılır , C de bu kolleksiyonlara "Structure" ismi veriliroğu API fonksiyonu Structure'lara Pointer kullanılır.Çoğunlukla structure tanımı için "typedef" ve "struct" kullanılır. (Yaklaşık olarak Delphideki Type ve Record).

 

// bir POINT için

 

typedef struct tagPOINT {

    LONG x;

    LONG y;

} POINT;

 

// bir RECT için

 

typedef struct _RECT {

    LONG left;

    LONG top;

    LONG right;

    LONG bottom;

} RECT;

 

Bazı API Structure'ları

  MSG = TMsg

  WNDCLASS = TWndClass

  FINDREPLACE = TFindReplace

  MENUITEMINFO = TMenuItemInfo

 

 

Çoğu Windows API veri structure tipleri için , structure veri tipi adının önüne bir "T" koyarak Delphi Record tipini elde edebilirsiniz , C de "RECT" Delphide "TRect" ; C de "POINTé Delphide "TPoint".C de "typedef" isimleri RECT ve POINT te olduğu gibi büyük harflerle yazılır , Delphide bunların başına T harfinin gelmesi gibi.

 

 

---Önceden Tanımlı Sabitler / Predefined Constants

 

Çoğu API parametereleri sayılardır (Cardinal , Integer , Word) ve kodu daha anlaşılır yapmak için sayılara sabit isimler verilir ve , parametre olarak bu sabitler kullanıldığında sabiterin değeri gönderilir.WM_PAINT , CS_PARENTDC , IDC_ARROW ve COLOR_BTNFACE gibi önceden tanımlanmış bir çok sabit

"

vardır."_" işaretinden önceki kısım sabitin kategorisini belirtir ve  "_" işaretinin devamıda kalan bölümde ise sabit değerinin ne yapacağını belirtirrneğin IDC_ARROW , Arrow kürsörü için Cursor ID dir.

 

Aşağıda bir kaç kategori belirtilmektedir

 

Prefix      Constant type

WM_         Windows Message

WS_         Window Creation Style

CS_         Class Style

CW_         Create Window

IDC_        Cursor ID

IDI_        Icon ID

HKEY_             Registry Key

FW_         Font Weight

BS_         Window Creation Button Style

MB_         Button Message

ES_         Window Creation Edit Style

 

 

---C Text Stringler ve Özel Karakterler

Delphi de ' tek tırnağı metinlerin başlangıç ve dbitiş noktalarını belirtmek için kullanabilirsiniz (String , PChar). C de çift tırnak kullanılır.Ve Delphi de # ile karakter numarası , #9 gibi metin içinde özel karakterler kullanmak içindir.Eğerki metin içinde tırnak görüntülemek istiyorsanız tabiki çift tırnak kullanabilirsiniz.

C de metin içinde özel karakterleri göstermek için kullanılırrneğin metin içinde çift tırnak göstermek için " kullanılır. Metin içinde bölü işaretini göstermek için iki tane bölü işaretini arka arkaya koyarsınız.

 

Bazı özel kodlar

 

t   Tab

'   Tek tırnak

"   Çift tırnak

?   Soru işareti

   Bölü işareti

n   Yeni satır

r   Carriage Return

b   Backspace

 

 

 

---API Fonksiyonlarında PChar ve Delphi String Kullanımı

 

API fonksiyonları kullandığınızda ve kendi programınızın değişkenlerini parametre olarak gönderdiğinizde aklınızda bulunması gerken şey değişkenlerin kullandıkları hafıza işletim sistemi tarafından değiştirilir , programınız tarafından değil , sabit olamayan değişkenler rneğin PChar) için hafıza tahsisi yapılmalıdır - (Cardinal , Integer , TRect tiplerinin hafıza kapladığı yer değişmez , PChar ve String içindeki metin uzunluğuna göre kapladığı hafızada değşir).Programınız PChar değişkeninin (aPCharVar:='Yeni metin') değerini değiştirirse , derleyici hafıza kullanımını değişken içindeki karakter sayısına uyacak şekilde değiştirir.Ama API lere gönderilen String değişkenler programınızın haberi olmadan değişir ve hafızayı OS ten gelen yeni metnin uzunluğuna göre değiştiremez.Bunu kod ile yapmanız gerekir ve değeri alacak kadar hafızanın ayrıldığından emin olmanız gerekir.

GetWindowsText() fonksiyonuna bakalım

 

procedure GetText;

  var

  Length: Integer;

  Text: PChar;

  Str1: String;

begin

 Length := GetWindowTextLength(hEdit1)+1;

 if Length < 2 then Exit;

 GetMem(Text,Length);

 GetWindowText(hEdit1,Text,Length);

 Str1 := String(Text);

 FreeMem(Text);

end;

 

 

hEdit1 değişkenindeki metin uzunluğu GetWindowTextLength() fonksiyonu ile döndürülür , dikkat edinki 1 arttırılarak (+1) döndürülür.Bütün null-terminated (boş sonlandırılan) (PChar) stringler  #0 karakteri ile biter , bu metnin bir parçası değildir ama hafızanın bir parçasıdır bunun için değişken uzunluğunu 1 arttırmanız gerekir.GetMem() fonksiyonu Pchar tipindeki Text değişkeni için hafıza bloğunun tahsis edilmesi için kullanılır.

 

 

 

 

---Okuma Örneği C Kodu

HANDLE hFile;  // değişkenler başlangışta belirtilir

               // "var" komutu yoktur

 

HANDLE hTempFile;

 

DWORD  dwBytesRead, dwBytesWritten;

 

char szTempName[MAX_PATH];

    // szTempName bir dizi dir [0..MAX_PATH] of Char

char buffer[4096];

 

// Open the file.

 

hFile = CreateFile("ORIGINAL.TXT",        // dosya adı

// çift tırnaklar metin için tek tırnak gibi kullanılır

    GENERIC_READ,                 // okumak için aç

    0,                            // paylaşma

    NULL,                         // security yok

    OPEN_EXISTING,                // sadece var olan dosya

    FILE_ATTRIBUTE_NORMAL,        // normal dosya

 

    NULL);                        // şablon özelliği yok

if (hFile == INVALID_HANDLE_VALUE) {

    ErrorHandler("Could not open file."); // işlem hatası

}

 

// geçici (temporary) dosya yarat

 

GetTempFileName("TEMP", // geçici dosyanın dizni

    "NEW",                // geçici dosyanın ismi

    0,                    // unique isim oluştur

    szTempName);          // isim için tampon(buffer)

 

hTempFile = CreateFile((LPTSTR) szTempName,  // dosya adı

// (LPTSTR) szTempName yaklaşık olarak Pascaldaki Typecasting gibidir

// PChar(szTempName);

    GENERIC_READ | GENERIC_WRITE, // okuma-yazma için aç

 

    0,                            // paylaşma

    NULL,                         // security yok

    CREATE_ALWAYS,                // var olan dosyanın üstüne yaz

    FILE_ATTRIBUTE_NORMAL,        // normal dosya

    NULL);                        // şablon özelliği yok

 

if (hTempFile == INVALID_HANDLE_VALUE) {

    ErrorHandler("Could not create temporary file.");

}

 

do

{

    if (ReadFile(hFile, buffer, 4096,

        &dwBytesRead, NULL)) {

// aşağıdaki yaklaşık Pascaldaki @ gibidir

        CharUpperBuff(buffer, dwBytesRead);

 

        WriteFile(hTempFile, buffer, dwBytesRead,

            &dwBytesWritten, NULL);

    }

} while (dwBytesRead == 4096);

 

CloseHandle(hFile);

CloseHandle(hTempFile);

 

// Geçici dosyayı yeni text dosyasına taşı

 

if (!MoveFile(szTempName, "ALLCAPS.TXT")) {

    ErrorHandler("Could not move temp. file.");

}

 

 

 

-Delphi Karşılığı

 

var

  hFile, hTempFile: THandle;

  BytesRead, BytesWritten: Cardinal;

  TempName: Array[0..MAX_PATH-1] of Char;

  buffer: Array[0..4095] of Char;

 

hFile := CreateFile('ORIGINAL.TXT',        // dosya adı

    GENERIC_READ,                          // okuma için aç

    0,                                     // paylaşma

    nil,                                   // security  yok

    OPEN_EXISTING,                         // var olan dosya sadece

    FILE_ATTRIBUTE_NORMAL,                 // normal dosya

    0);                                    // şablon özelliği yok

if hFile = INVALID_HANDLE_VALUE then

begin

  ErrorHandler('Could not open file.'); // işlem hatası

  Exit;

end;

 

// Geçici (temporary) dosya yarat

 

GetTempFileName('TEMP', // geçici dosyanın dizni

    'NEW',                // geçici dosyanın ismi

    0,                    // unique isim oluştur

    TempName);            // isim için tampon(buffer)

 

hTempFile := CreateFile(TempName,  // dosya adı

    GENERIC_READ or GENERIC_WRITE, // okuma-yazma için aç

 

    0,                             // paylaşma

    nil,                           // security yok

    CREATE_ALWAYS,                 // var olan dosyanın üstüne yaz

    FILE_ATTRIBUTE_NORMAL,         // normal dosya

    0);                            // şablon özelliği yok

 

if hTempFile = INVALID_HANDLE_VALUE then

begin

  CloseHandle(hFile);

  ErrorHandler('Could not create temporary file.');

  Exit;

end;

 

Repeat

  if ReadFile(hFile, buffer, SizeOf(buffer),

        BytesRead, nil) then

  begin

   CharUpperBuff(buffer, BytesRead);

   WriteFile(hTempFile, buffer, BytesRead,

            BytesWritten, nil);

  end;

until BytesRead <> SizeOf(buffer); // 4096

 

CloseHandle(hFile);

CloseHandle(hTempFile);

 

// Geçici dosyayı yeni text dosyasına taşı

 

if not MoveFile(TempName, 'ALLCAPS.TXT') then

    ErrorHandler('Could not move temp. file.');

 

 

ErrorHandler() fonksiyonu hata mesajı göstermek için kullanılan bir uygulama fonksiyonudur , Windows API fonksiyonu değil.C de Pascalda olduğu gibi değişkenler var ile tanımlanmaz , genelde başlangıçta tanımlanırlar.CreateFile() fonksiyonuna bakarsanız C de 2 NULL parametresi var iken Delphide bir nil bir de 0 parametreleri vardır.

C de NULL sayısal (HANDLE) tipler için 0 a çevrilir , Delphide nil sadece pointerlar için kullanılmaya başşladığından beri sayısal değerler için 0 kullanmanız gerekir , Delphide fonksiyon (C de prosedür yoktur sadece fonksiyon vardır) ile kodları bağdaştırmak için kullanılan "begin" "end;" C de "{" "}" şeklindedir.C de if ten sonra then yoktur (if te sonra then geleceği kesindir ve içindedir bunun için yazılmaz).

Delphide eşitlik karşılaştırması için "=" kulanılır (a=b) , C de ise "==" (A==B) şeklinde kullanılır.Delphi "OR" binary operatörü C de "|" , Delphi "AND" operatörü C de "&" , işlevleri aynıdır.Delphi NOT operatörü (If NOT(A) THEN ...) , C de "!" (If !(A) ...] şeklindedir.

 

Delphi - .....................................

 

Excele Veri aktarımına Örnek

Excele Database uygulammarında veri aktarımana basit bir örnek

            mbedtr@hotmail.com(Mücahit Bedir)

           

           

#include <utilcls.h>

#include <sysvari.h>

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Variant ex, // Excel

wbs, // Workbooks

awb, // Active workbook

aws, // Active worksheet

rng; // Range (hücre)

 

Screen->Cursor = crHourGlass;

 

try {

ex = Variant::CreateObject("Excel.Application");

}

 

catch ( ... ) {

Screen->Cursor = crDefault;

MessageBox(Form1->Handle, "Microsoft Excel Başlatılamadı", "Warning", MB_OK | MB_SYSTEMMODAL );

return;

}

 

wbs = ex.OlePropertyGet("Workbooks");

wbs.OleProcedure("Open", + "C:Book1.xls"); // Var Olan Bir Dosyayı Açar.

 

awb = ex.OlePropertyGet("ActiveWorkbook");

aws = awb.OlePropertyGet("ActiveSheet");

//ex.OlePropertySet("Visible", false); // Excel Gizli Calisir. Görünmez.

ex.OlePropertySet("Visible", true); // Excel Görünür.

 

Table1->AutoCalcFields = false;

Table1->DisableControls();

Table1->First();

 

AnsiString BaslikA, BaslikB;

 

BaslikA = "A1";

BaslikB = "B1";

 

rng = aws.OlePropertyGet("Range", BaslikA.c_str() );

rng.OlePropertySet("Value", "Baslik1");

 

rng = aws.OlePropertyGet("Range", BaslikB.c_str() );

rng.OlePropertySet("Value", "Baslik2");

 

int i = 2; // İkinci Satirdan Başla....

AnsiString HucreA, HucreB;

 

while(!Table1->Eof)

{

Application->ProcessMessages();

 

HucreA = "A" + IntToStr(i); // Hücreler (A1, A2... v.s.)

HucreB = "B" + IntToStr(i);

 

rng = aws.OlePropertyGet("Range", HucreA.c_str() );

rng.OlePropertySet("Value", Table1->FieldByName("ALANADI1")->AsString.c_str() );

 

rng = aws.OlePropertyGet("Range", HucreB.c_str() );

rng.OlePropertySet("Value", Table1->FieldByName("ALANADI2")->AsString.c_str() );

 

i++;

Table1->Next();

}

 

Table1->AutoCalcFields = true;

Table1->EnableControls();

 

ex.OlePropertySet("DisplayAlerts",false);

ex.OlePropertyGet("Workbooks");

 

wbs.OlePropertyGet("Item",1).OleProcedure("SaveAs", "c:Deneme.xls"); // farkli kaydet

ex.OleProcedure("Quit"); // Excelden çık...

 

aws = Unassigned;

awb = Unassigned;

ex = Unassigned;

 

Screen->Cursor = crDefault;

}

 

C++ Builder - .....................................

 

Bu web sitesi ücretsiz olarak Bedava-Sitem.com ile oluşturulmuştur. Siz de kendi web sitenizi kurmak ister misiniz?
Ücretsiz kaydol