DLL içinde API kullanırken hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

DLL içinde API kullanırken hata

Mesaj gönderen salvation »

Aşağıdaki fonksiyon ve bir kaç fonksiyondan oluşan bi dll hazırlamak istiyorum ama Api kullandığım zaman şu hatayı alıyorum:

Kod: Tümünü seç

Invalid Pointer Operation
Örneğin şu fonksiyondada öyle yapıyor:

Kod: Tümünü seç

Function Win_Kullanici : string;export;
Var
    buffer : String;
    buffsize : DWORD;
Begin
    buffsize := 128;
    Setlength(buffer,buffsize);
    Getusername(Pchar(buffer),buffsize);
    result := buffer;
end;
Ama ilginç olan "Invalid Pointer Operation" dedikten sonra edit1'e kullanıcı adını yazıyor. Yani aslında çalışıyor. Api kullanmadığım dll lerde ise bi sorun yok.
Sebebi nedir? Api kullanırken ekstra bişeyler yapıcaz dll'de?
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

DLL lerde fonksiyonda geriye dönen değer PChar veya string ise sharemem modulunude kullanman gerekiyormuş yani uses kısmına

yeni dll oluşturunca bi yazı çıkıyopr orayı tercüme edersen hatanın neden kaynaklandığını anlarsın sanıyorum
Bize iyilik yaraşır.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@mcihad haklı...

- Ya da... alternatif bir kullanım, String yerine ShortString kullan hiçbir değişiklik yapmadan çalışsın...
Resim
Resim ....Resim
Kullanıcı avatarı
salvation
Üye
Mesajlar: 303
Kayıt: 22 Mar 2004 01:57
Konum: Eskişehir
İletişim:

Mesaj gönderen salvation »

mcihad yazdı:DLL lerde fonksiyonda geriye dönen değer PChar veya string ise sharemem modulunude kullanman gerekiyormuş yani uses kısmına

Kod: Tümünü seç

Uses
   ShareMem;
Yani bu uniti mi kullanıcak? Şu an deneyemiyorumda
Cevapla