Sayfayı Yazdır | Pencereyi Kapat

Could not convert variant of type (UnicodeString)

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1066
Tarih: 13 Temmuz 2025 Saat 02:06
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Could not convert variant of type (UnicodeString)
Mesajı Yazan: Sudesigirci
Konu: Could not convert variant of type (UnicodeString)
Mesaj Tarihi: 08 Temmuz 2025 Saat 13:12
Merhabalar main coddan Uregister unitine geçmek istediğimde Could not convert variant of type (UnicodeString) into type (Integer) hatası alıyorum bu hatayı nasıl çözeceğimi bilemedim yardımlarınız için teşekkür ederim
//Main Code
var
loginform:TclStyleForm;
loginbtn,signupbtn;TClProButton;
emailedit,passwordedit:TclProEdit;
quotelabel:TClProLabel;
UnitRegister:TclUnit;
void CreateTable;
{
  try
  {
    Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'miaproject.db3', '');
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'CREATE TABLE IF NOT EXISTS Users (' +
      'UserID INTEGER PRIMARY KEY AUTOINCREMENT,' + 
      'Email TEXT NOT NULL UNIQUE,' + 
      'FirstName TEXT NOT NULL,' + 
      'LastName TEXT NOT NULL,' + 
      'Password TEXT NOT NULL' + 
      ')';
    Clomosy.DBSQLiteQuery.OpenOrExecute();
  }
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}

void SignIn;
{
  try
  Clomosy.DBSQLiteQuery.SQL.Text = 
  'SELECT COUNT(*) AS number FROM Users WHERE Email = ' + QuotedStr(emailedit.Text) + 'AND Password = ' + QuotedStr(passwordedit.Text);
  Clomosy.DBSQLiteQuery.OpenOrExecute();
  if (Clomosy.DBSQLiteQuery.FieldByName('number').AsString == '1')
  {
    Clomosy.RunUnit('UHomePage');
  }
  else  
  {
    ShowMessage('Giriş başarısız.Email ya da şifre hatalı');
  }
  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}


void gotoRegister;
{
UnitRegister.UnitName='URegister';
UnitRegister.CallerForm='loginform';
UnitRegister.Run;
}


{
  loginform=TclStyleForm.Create(Self);
  loginform.SetFormBGImage(' https://i.imgur.com/qbg3hQN.png" rel="nofollow - https://i.imgur.com/qbg3hQN.png ');
  
  emailedit=loginform.AddNewProEdit(loginform, 'emailedit', 'Email: ');
  emailedit.Align=alTop;
  emailedit.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff')
  emailedit.Width=60;
  emailedit.Height=40;
  emailedit.Margins.Top=250;
  emailedit.Margins.Right=60;
  emailedit.Margins.Left=60;
  emailedit.clProSettings.RoundHeight=8;
  emailedit.clProSettings.RoundWidth=8;
  emailedit.clProSettings.TextSettings.Font.Size=10;
  emailedit.clProSettings.TextSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  emailedit.SetclProSettings(emailedit.clProSettings);
  
  passwordedit=loginform.AddNewProEdit(loginform, 'passwordedit', 'Şifre: ');
  passwordedit.Align=alTop;
  passwordedit.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff')
  passwordedit.Width=60;
  passwordedit.Height=40;
  passwordedit.Margins.Top=50;
  passwordedit.Margins.Right=60;
  passwordedit.Margins.Left=60;
  passwordedit.clProSettings.RoundHeight=8;
  passwordedit.clProSettings.RoundWidth=8;
  passwordedit.clProSettings.TextSettings.Font.Size=10;
  passwordedit.clProSettings.TextSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  passwordedit.SetclProSettings(passwordedit.clProSettings);


  loginbtn=loginform.AddNewProButton(loginform, 'loginbtn', 'GİRİŞ YAP');
  loginbtn.Align=alCenter;
  loginbtn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff');
  loginbtn.clProSettings.TextSettings.Font.Size=30;
  loginbtn.clProSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  loginbtn.clProSettings.TextSettings.Font.Style=[fsBold];
  loginbtn.Height=30;
  loginbtn.Width=80;
  loginbtn.Margins.Bottom=100;
  loginbtn.Margins.Right=100;
  loginbtn.clProSettings.RoundHeight=8;
  loginbtn.clProSettings.RoundWidth=8;
  loginbtn.clProSettings.IsTransparent=True;
  loginbtn.clProSettings.FontVertAlign = palcenter;
  loginbtn.clProSettings.FontHorzAlign = palCenter;
  loginbtn.SetclProSettings(loginbtn.clProSettings);
  
  signupbtn=loginform.AddNewProButton(loginform, 'signupbtn', 'KAYIT OL');
  signupbtn.Align=alCenter;
  signupbtn.clProSettings.BackgroundColor=clAlphaColor.clHexToColor('#ffffff');
  signupbtn.clProSettings.TextSettings.Font.Size=30;
  signupbtn.clProSettings.FontColor=clAlphaColor.clHexToColor('#e9e9e9');
  signupbtn.clProSettings.TextSettings.Font.Style=[fsBold];
  signupbtn.Height=30;
  signupbtn.Width=80;
  signupbtn.Margins.Bottom=100;
  signupbtn.Margins.Left=100;
  signupbtn.clProSettings.RoundHeight=8;
  signupbtn.clProSettings.RoundWidth=8;
  signupbtn.clProSettings.IsTransparent=True;
  signupbtn.clProSettings.FontVertAlign = palcenter;
  signupbtn.clProSettings.FontHorzAlign = palCenter;
  signupbtn.SetclProSettings(signupbtn.clProSettings);
  
  
  quotelabel = loginform.AddNewProLabel(loginform,'quotelabel','"Müşteriyi dinleyen değil, anlayan sistem."');
  quotelabel.Align = alBottom;
  quotelabel.Margins.Bottom=20;
  quotelabel.Margins.Left=70;
  quotelabel.Margins.Right=50;
  quotelabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  quotelabel.clProSettings.FontSize =15;
  quotelabel.clProSettings.AutoSize = True;
  quotelabel.clProSettings.FontVertAlign = palcenter;
  quotelabel.clProSettings.FontHorzAlign = palLeading;
  quotelabel.clProSettings.TextSettings.Font.Style = [fsItalic];
  quotelabel.clProSettings.IsFill = True; 
  quotelabel.clProSettings.IsRound = True;
  quotelabel.SetclProSettings(quotelabel.clProSettings);
  
  CreateTable;
  UnitRegister=TclUnit.Create;
  loginform.AddNewEvent(signupbtn,tbeOnClick,'gotoRegister');
  loginform.Run;
}

//URegister kodum
var
  KayitForm: TclStyleForm;
  nameEdit, surnameEdit, emailEdit, passwordEdit: TclProEdit;
  kayitButton: TClProButton;
  titleLabel: TClProLabel;

function IsValidAndUniqueEmail(mail: String): Boolean;
var atPos, dotPos, adetInt: Integer;
{
  atPos = Pos('@', mail);
  dotPos = Pos('.', mail);

  if (atPos <= 1 || dotPos <= atPos + 1 || dotPos >= Length(mail)) {
    ShowMessage('Geçerli bir e-posta adresi giriniz.');
    Result = False;
    exit;
  }

  try
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'SELECT COUNT(*) as adet FROM Users WHERE Email = ' + QuotedStr(mail);

    Clomosy.DBSQLiteQuery.Open; 

    if not Clomosy.DBSQLiteQuery.Eof then {
      adetInt = Clomosy.DBSQLiteQuery.FieldByName('adet').AsInteger;
    } else {
      adetInt = 0;
    }

    Clomosy.DBSQLiteQuery.Close;

    if (adetInt > 0) {
      ShowMessage('Bu e-posta adresi zaten kayıtlı.');
      Result = False;
    } else {
      Result = True;
    }

  except
    ShowMessage('E-posta kontrolünde hata oluştu: ' + LastExceptionMessage);
    Clomosy.DBSQLiteQuery.Close;
    Result = False;
  }
}



function CheckBlanks: Boolean;
{
  if (Trim(nameEdit.Text) == '' || Trim(surnameEdit.Text) == '' ||
      Trim(emailEdit.Text) == '' || Trim(passwordEdit.Text) == '') {
    ShowMessage('Lütfen tüm alanları doldurun.');
    Result = False;
  } else {
    Result = True;
  }
}

void ResetFields;
{
  nameEdit.Text = '';
  surnameEdit.Text = '';
  emailEdit.Text = '';
  passwordEdit.Text = '';
}

void KayitOl;
{
  if (CheckBlanks && IsValidAndUniqueEmail(emailEdit.Text)) {
    Clomosy.DBSQLiteQuery.SQL.Text = 
      'INSERT INTO Users (Email, FirstName, LastName, Password) VALUES (' +
      QuotedStr(emailEdit.Text) + ',' +
      QuotedStr(nameEdit.Text) + ',' +
      QuotedStr(surnameEdit.Text) + ',' +
      QuotedStr(passwordEdit.Text) + ')';

    try
      Clomosy.DBSQLiteQuery.OpenOrExecute;
      ShowMessage('Kayıt başarıyla tamamlandı.');
      ResetFields;
    except
      ShowMessage('Kayıt sırasında bir hata oluştu: ' + LastExceptionMessage);
  }
}

{
  KayitForm = TclStyleForm.Create(Self);
  KayitForm.SetFormBGImage(' https://i.imgur.com/XYlUQhl.jpeg" rel="nofollow - https://i.imgur.com/XYlUQhl.jpeg ');

  titleLabel = KayitForm.AddNewProLabel(KayitForm, 'titleLabel', 'Kayıt Ol');
  titleLabel.Align = alTop;
  titleLabel.Height = 40;
  titleLabel.clProSettings.FontSize = 20;
  titleLabel.clProSettings.TextSettings.Font.Style = [fsBold];
  titleLabel.clProSettings.TextSettings.FontHorzAlign = palCenter;
  titleLabel.SetclProSettings(titleLabel.clProSettings);

  nameEdit = KayitForm.AddNewProEdit(KayitForm, 'nameEdit', 'Adınız');
  nameEdit.Align = alTop;
  nameEdit.Height = 40;
  nameEdit.Margins.Top = 20;

  surnameEdit = KayitForm.AddNewProEdit(KayitForm, 'surnameEdit', 'Soyadınız');
  surnameEdit.Align = alTop;
  surnameEdit.Height = 40;
  surnameEdit.Margins.Top = 10;

  emailEdit = KayitForm.AddNewProEdit(KayitForm, 'emailEdit', 'E-posta adresi');
  emailEdit.Align = alTop;
  emailEdit.Height = 40;
  emailEdit.Margins.Top = 10;

  passwordEdit = KayitForm.AddNewProEdit(KayitForm, 'passwordEdit', 'Şifre');
  passwordEdit.Align = alTop;
  passwordEdit.Height = 40;
  passwordEdit.clProSettings.Password = True;
  passwordEdit.SetclProSettings(passwordEdit.clProSettings);
  passwordEdit.Margins.Top = 10;

  kayitButton = KayitForm.AddNewProButton(KayitForm, 'kayitButton', 'Kayıt Ol');
  kayitButton.Align = alTop;
  kayitButton.Height = 45;
  kayitButton.Margins.Top = 20;
  kayitButton.clProSettings.TextSettings.Font.Style = [fsBold];
  kayitButton.clProSettings.TextSettings.FontHorzAlign = palCenter;
  kayitButton.SetclProSettings(kayitButton.clProSettings);
  KayitForm.AddNewEvent(kayitButton, tbeOnClick, 'KayitOl');

  KayitForm.Run;
}




Cevaplar:
Mesajı Yazan: cerenn
Mesaj Tarihi: 08 Temmuz 2025 Saat 13:42
Merhaba Sude,
void gotoRegister; { 
UnitRegister.UnitName='URegister'; 
UnitRegister.CallerForm=loginform;  
UnitRegister.Run; }

callerform  property'si string değil, form nesnesi bekliyor. Sen'loginform' (string) veriyorsun, ama loginform yani form nesnesi vermen gerekiyor. 
İyi çalışmalar dilerim



Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 08 Temmuz 2025 Saat 14:10
Merhaba Sude,
Diğer hatalar ise; 
kayitButton.clProSettings.TextSettings.FontHorzAlign = palCenter; olarak değil 
kayitButton.clProSettings.FontHorzAlign = palCenter;

bir diğeri ise;
 passwordEdit.clProSettings.Password = True; kullanımı yanlış 
 passwordEdit.Password = True; doğrusu bu şekil de 

İyi çalışmalar.



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net