Unit mantığı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Unit mantığı

Mesaj gönderen yhackup »

Merhaba,
Unit mantığını anlamak için uğraşıyorum. Bir konuyu anlayamadım.

Örneğin Ls diye bir unit oluşturuyorum, içine de Lisans diye boolean bir function,

başka bir formdan, uses'e Ls ekledikten sonra formumda istediğim yerde sadece if (Lisans) then ... deyip kullanmak istiyorum. ama kullanamadım.

Şu anda kullanabilmek için,uses'e Ls ekledikten sonra if (Ls.lisans.Lisans) then ... şeklinde kullanabiliyorum.

Umarım anlamadığım konuyu anlatabilmişimdir... :)



Alttaki Ls kodlarım.

Kod: Tümünü seç

unit Ls;

interface
uses
  Winapi.Windows, System.SysUtils,SDL_cpuid,System.Classes;

type
 Tlisans = class
  private
    { Private declarations }
  public
    function lisans(): boolean;
    { Public declarations }
 published
 end;

 var
  lisans : Tlisans;

implementation

{ Tlisans }


function cpuid:string;
begin
Result := StringReplace(GenerateCPUID, '-','', [rfReplaceAll]);
end;


function Tlisans.lisans(): boolean;
var
lisanslist:TStringlist;
i:integer;
begin
  Result := False;
    lisanslist := TStringList.Create;
    try
       lisanslist.Add('9A4E190CE23C1260');
       lisanslist.Add('9A4E190CE23C1261');
       lisanslist.Add('9A4E190CE23C1262');
       for I := 0 to lisanslist.Count - 1 do
       begin
         if (cpuid = lisanslist[i]) then
         begin
           Result := True;
           break
         end;
       end;
    finally
      lisanslist.Free;
    end;
end;


end.
Hatalarımı ve yanlışlarımı acımasızca yüzüme vurabilirsiniz :D
Çaylak Delphici :D

Yakup ULUTAŞ
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Unit mantığı

Mesaj gönderen varyemez »

Lis1:=TLisans.create(nil); // diyerek onu kullan diğer unit içinde.
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

varyemez yazdı:Lis1:=TLisans.create(nil); // diyerek onu kullan diğer unit içinde.
işte bunları kullanmak istemiyorum Örneğin Copy() veya Lenght() nasıl kullanılıyorsa direkt o şekilde kullanmak istiyorum.
Çaylak Delphici :D

Yakup ULUTAŞ
varyemez
Üye
Mesajlar: 262
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: Unit mantığı

Mesaj gönderen varyemez »

en üstteki uses kısmına ekledin değil mi.
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Unit mantığı

Mesaj gönderen freeman35 »

class ı create etmeden kullanamazsın, neden class a eklemek zorunda sın ? o function ı class ın dışına çıkar. Tabi burada o function ın içeriğide önemli.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

freeman35 yazdı:class ı create etmeden kullanamazsın, neden class a eklemek zorunda sın ? o function ı class ın dışına çıkar. Tabi burada o function ın içeriğide önemli.
zorunda değilim, ben başka bir unitteki bir fonksiyonu , ana unitimde en rahat nasıl kullanırım ona bakıyorum fonksiyon çok teferruatlı değil

"o function ı class ın dışına çıkar." dan kastınız nedir ?

"Tabi burada o function ın içeriğide önemli." işlemci seri nosu ile mac adressi listem ile karşılaştırıp, listemde varsa true yoksa false döndürüyor.
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

varyemez yazdı:en üstteki uses kısmına ekledin değil mi.
evet eklemediğim zaman hiç kullanamıyorum
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Unit mantığı

Mesaj gönderen freeman35 »

Kod: Tümünü seç

unit Ls;
interface
uses
  Winapi.Windows, System.SysUtils,SDL_cpuid,System.Classes;
  function lisans(): boolean;
implementation
......
function lisans(): boolean;
...
pascal ın temel kurallarını öğrenmeni tavsiye ederim.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

freeman35 yazdı:

Kod: Tümünü seç

unit Ls;
interface
uses
  Winapi.Windows, System.SysUtils,SDL_cpuid,System.Classes;
  function lisans(): boolean;
implementation
......
function lisans(): boolean;
...
pascal ın temel kurallarını öğrenmeni tavsiye ederim.
bu şekilde diğer bir unitten, lisans fonksiyonuna direk erişemiyorum.
Çaylak Delphici :D

Yakup ULUTAŞ
ertank
Kıdemli Üye
Mesajlar: 1653
Kayıt: 12 Eyl 2015 12:45

Re: Unit mantığı

Mesaj gönderen ertank »

yhackup yazdı:
freeman35 yazdı:

Kod: Tümünü seç

unit Ls;
interface
uses
  Winapi.Windows, System.SysUtils,SDL_cpuid,System.Classes;
  function lisans(): boolean;
implementation
......
function lisans(): boolean;
...
pascal ın temel kurallarını öğrenmeni tavsiye ederim.
bu şekilde diğer bir unitten, lisans fonksiyonuna direk erişemiyorum.
Erişemediğin örnek projeyi paylaşabilir misin? Kullanımında bir hata olması gerekli yoksa freeman35 doğru öneride bulunmuş. Sorunu gösterir örnek projeyi komple paylaşmadan hatanı tespit etmek kolay olmayabilir.
edo
Üye
Mesajlar: 40
Kayıt: 05 Haz 2005 11:12

Re: Unit mantığı

Mesaj gönderen edo »

Metodunun başına function yerine class function yazarsan (class function nedir/ne değildir bir araştır) TLisans.Lisans şeklinde erişim sağlayabilirsin, Lisans adındaki değişkene ihtiyacın kalmaz. Ayrıca class'ın instance'ını tuttuğunu değişken adı ile aynı isimde bir metod tanımı da kafa karıştırıcı.

Ayrıca freeman35'in dediğini de göz ardı etmemende de senin adına yarar var :)

Ne yaparsan yap, nasıl yaparsan yap, yaptığın şeyin niye ve nasıl çalıştığını muhakkak bil.
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

edo yazdı:Metodunun başına function yerine class function yazarsan (class function nedir/ne değildir bir araştır) TLisans.Lisans şeklinde erişim sağlayabilirsin, Lisans adındaki değişkene ihtiyacın kalmaz. Ayrıca class'ın instance'ını tuttuğunu değişken adı ile aynı isimde bir metod tanımı da kafa karıştırıcı.

Ayrıca freeman35'in dediğini de göz ardı etmemende de senin adına yarar var :)

Ne yaparsan yap, nasıl yaparsan yap, yaptığın şeyin niye ve nasıl çalıştığını muhakkak bil.
Anladım,
Teşekkür ederim.
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

Olayın mantığını kavradım verilen cevaplar için teşekkür ederim.
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
yhackup
Üye
Mesajlar: 115
Kayıt: 09 Ağu 2014 09:09
İletişim:

Re: Unit mantığı

Mesaj gönderen yhackup »

freeman35 yazdı:

Kod: Tümünü seç

unit Ls;
interface
uses
  Winapi.Windows, System.SysUtils,SDL_cpuid,System.Classes;
  function lisans(): boolean;
implementation
......
function lisans(): boolean;
...
pascal ın temel kurallarını öğrenmeni tavsiye ederim.
freeman35 Cevabındaki detayı gözden kaçırmışım kusuruma bakma bu şekilde çözdüm olayı :bravo:
Hakkını helal et :Noops
Çaylak Delphici :D

Yakup ULUTAŞ
Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2356
Kayıt: 12 Haz 2003 04:05
Konum: merkez camii yanı

Re: Unit mantığı

Mesaj gönderen freeman35 »

Helaldir, bildiklerimizi aktarabiliyorsak ne mutlu bize.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Cevapla