Çözüldü C/C++ Convert Argument Hatası

25 Eyl 2012
211
1
Sakarya
Merhaba, C++ ile yazdığım bir programda çok değişik bir hata alıyorum. Arama motorlarında arattığımda çözümünü bulamıyorum. Yardımcı olabilirseniz sevinirim.

C++:
#include <tchar.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    // önceki kodlar.
    if (_Buffer)
    {
        // kodlar
    }
    else
    {
        MyHandleError(TEXT("Out of memory. \n"), E_OUTOFMEMORY); // Hata bölümü TEXT
    }
}

void MyHandleError(LPTSTR psz, int nErrorNumber)
{
    _ftprintf(stderr, TEXT("An error occurred in the program. \n"));
    _ftprintf(stderr, TEXT("%s\n"), psz);
    _ftprintf(stderr, TEXT("Error number %x.\n"), nErrorNumber);
}
Aldığım Hata: Error C2664 'void MyHandleError(LPTSTR,int)': cannot convert argument 1 from 'const wchar_t [17]' to 'LPTSTR'

Hatayı biraz araştırdım ve birkaç çözüm buldum. Çözüm olarak şunu öneriyorlardı:
C++:
void MyHandleError(LPTSTR psz, int nErrorNumber);
// yerine
void MyHandleError(LPCTSTR psz, int nErrorNumber);
// kısacası (LPTSTR) yerine (LPCTSTR) kullanılmalı deniliyordu.
Önerileni yaptığım zamanda aynı hatayı alıyorum.
Yardımcı olacaklara şimdiden teşekkür ederim.
İyi Çalışmalar...
 

Napcaz

Katılımcı Üye
28 Nis 2019
767
769
Cudi
Denedim yine aynı hatayı alıyorum.
LPCWSTR yazmama rağmen hata yine aynısı: Error C2664 'void MyHandleError(LPTSTR,int)': cannot convert argument 1 from 'const wchar_t [17]' to 'LPTSTR'
Kafayı yemek üzereyim.
Bu hatayı alıyorsanız yanlış yere yazıyorsunuz demektir
void MyHandleError(LPTSTR,int) değilde void MyHandleError(LPCWSTR,int) şeklinde mi denediniz?
 
25 Eyl 2012
211
1
Sakarya
Bu hatayı alıyorsanız yanlış yere yazıyorsunuz demektir
void MyHandleError(LPTSTR,int) değilde void MyHandleError(LPCWSTR,int) şeklinde mi denediniz?
C++:
void MyHandleError(LPTSTR psz, int nErrorNumber)
{
    _ftprintf(stderr, TEXT("An error occurred in the program. \n"));
    _ftprintf(stderr, TEXT("%s\n"), psz);
    _ftprintf(stderr, TEXT("Error number %x.\n"), nErrorNumber);
}
// olan kodu şu şekilde değiştirdim
void MyHandleError(LPCWSTR psz, int nErrorNumber)
{
    _ftprintf(stderr, TEXT("An error occurred in the program. \n"));
    _ftprintf(stderr, TEXT("%s\n"), psz);
    _ftprintf(stderr, TEXT("Error number %x.\n"), nErrorNumber);
}
 

Napcaz

Katılımcı Üye
28 Nis 2019
767
769
Cudi
Projeyi kendim derledim ve çalıştırdım, hatayı da size önerdiğim şekilde düzeltince kod sorunsuz çalıştı, sizin tarafınızda bir yanlışlık olduğunu düşünüyorum.

C++:
#include <tchar.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
void MyHandleError(LPCWSTR psz, int nErrorNumber)
{
    _ftprintf(stderr, TEXT("An error occurred in the program. \n"));
    _ftprintf(stderr, TEXT("%s\n"), psz);
    _ftprintf(stderr, TEXT("Error number %x.\n"), nErrorNumber);
}
int _tmain(int argc, _TCHAR* argv[])
{
    // önceki kodlar.
    if (0)
    {
        // kodlar
    }
    else
    {
        MyHandleError(TEXT("Out of memory. \n"), E_OUTOFMEMORY); // Hata bölümü TEXT
    }
}

En üstte bizle paylaştığınız kodda eksik olan bir şey var aslında, oda fonksiyon ön tanımlayıcı bloğu, sizde şu şekilde gözükmesi lazım.
C++:
void MyHandleError(LPTSTR, int);
Onu da LPCWSTR şekliyle düzenleyip tekrar deneyebilir misiniz
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.