Sayfayı Yazdır | Pencereyi Kapat

Fonksiyon kullanırken çalışma zamanı hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Clomosy ile değişken kullanımı
Forum Tanımlaması: TRObject dili ile değişken tanımlaması ve ekranda gösterme
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1192
Tarih: 16 Eylül 2025 Saat 19:43
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Fonksiyon kullanırken çalışma zamanı hatası
Mesajı Yazan: M-Guney
Konu: Fonksiyon kullanırken çalışma zamanı hatası
Mesaj Tarihi: 16 Eylül 2025 Saat 15:01
Fonksiyon ve prosedür kullanarak kullanıcıdan inputandcall ile alınmış olan input ile resmin değişeceği bir kodu işlevsel bir şekilde yazmayı denedim fakat çalışırken aynı anda hepsi çalışıtığı için istediğim resim gözükmüyor.






var
mainForm: TClForm;
testImage: TCLImage;
userinput : String;
function TakeUserInput:String;
{
if(VarIsNull(userinput))
InputAndCall('Hayvan Seçiniz Kedi ya da Tilki','--- ','TakeUserInput','Exit');
else 
  {
  userinput = Clomosy.GlobalResult;
  userinput = AnsiLowerCase(userinput);
  Result= userinput;}
  //ShowMessage('userinput: '+userinput);
}
void ChangeImg(userinput:String)
{
//mainForm= TClForm.Create(self);
//testImage= mainForm.AddNewImage(mainForm,'testImg');
  if(userinput=='tilki')
  {
    testImage.MultiResBitMap.Clear;
    mainForm.SetImage(testImage, ' https://pngimg.com/d/arctic_fox_PNG115432.png" rel="nofollow - https://pngimg.com/d/arctic_fox_PNG115432.png ');
    mainForm.AddNewEvent(testImage,tbeOnClick,'ChangeImg');
  }
  else if(userinput=='kedi')
  {
    testImage.MultiResBitMap.Clear;
    mainForm.SetImage(testImage, ' https://pngimg.com/d/cat_PNG115405.png" rel="nofollow - https://pngimg.com/d/cat_PNG115405.png ');
    mainForm.AddNewEvent(testImage,tbeOnClick,'ChangeImg');
  }
  else if((userinput== '')||(userinput== '--'))
  ChangeImg(userinput);
  else 
  ShowMessage('Elimizde yok Malesef...');
  mainForm.run;
}
{
  mainForm= TClForm.Create(self);
  testImage= mainForm.AddNewImage(mainForm,'testImg');
  
  InputAndCall('Hayvan Seçiniz Kedi ya da Tilki','--- ','TakeUserInput','Exit');
  //if (userinput > 0)//(Length(userinput)>=3)
    //{
    ShowMessage('Input: '+userinput+ IntToStr(Length(userinput)));
    //mainForm.AddNewEvent(InputAndCall, tbeOnEnter, 'ChangeImg(userinput)');
    ChangeImg(userinput);
    testImage.align= alCenter;
    testImage.Height= 400;
    testImage.width= 200;
    mainForm.run;

}



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 16 Eylül 2025 Saat 15:41
Merhaba Güney, 
Aşağıda yer alan kodu inceler misin?
  mainForm: TclForm;
  testImage: TClProImage;
  editInput: TClProEdit;
  userinput: String;

function GetUserInput: String {
  userinput = editInput.Text;
  userinput = AnsiLowerCase(Trim(userinput));
  Result = userinput;
}

function GetImageUrl(animal: String): String {
  if (animal == 'tilki') {
    Result = ' https://resmim.net/cdn/2025/09/16/jEiO8W.png" rel="nofollow - https://resmim.net/cdn/2025/09/16/jEiO8W.png ';
  } else if (animal == 'kedi') {
    Result = ' https://resmim.net/cdn/2025/09/16/jEi7hL.png" rel="nofollow - https://resmim.net/cdn/2025/09/16/jEi7hL.png ';
  } else {
    Result = '';
  }
}

void ChangeImg 
  var imageUrl: String;
{
  userinput = GetUserInput;
  imageUrl = GetImageUrl(userinput);
  
  if (imageUrl <> '') {
    mainForm.SetImage(testImage, imageUrl);
  } else {
    ShowMessage('Elimizde yok Malesef...');
  }
}

void EditOnChange {
  ChangeImg;
}

void CreateEdit {
  editInput = mainForm.AddNewProEdit(mainForm, 'editInput', 'Hayvan yazın (kedi/tilki)');
  editInput.Align = alTop;
  editInput.Height = 50;
  editInput.Margins.Top = 20;
  editInput.Margins.Left = 20;
  editInput.Margins.Right = 20;
  editInput.clProSettings.FontSize = 16;
  editInput.clProSettings.FontColor = clAlphaColor.clHexToColor('#2C3E50');
  editInput.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#ECF0F1');
  editInput.clProSettings.RoundHeight = 10;
  editInput.clProSettings.RoundWidth = 10;
  editInput.SetclProSettings(editInput.clProSettings);
  mainForm.AddNewEvent(editInput, tbeOnChange, 'EditOnChange');
}

void CreateImage {
  testImage = mainForm.AddNewProImage(mainForm, 'testImg');
  testImage.Align = alClient;
  testImage.Margins.Top = 20;
  testImage.Margins.Bottom = 20;
  testImage.Margins.Left = 20;
  testImage.Margins.Right = 20;
}

void SetupForm {
  mainForm = TclForm.Create(self);
  mainForm.clSetWindowState(fwsMaximized);
}

{
  SetupForm;
  CreateEdit;
  CreateImage;
  mainForm.Run;
}
Bu şekil de bir düzeltme yaptım.



Mesajı Yazan: M-Guney
Mesaj Tarihi: 16 Eylül 2025 Saat 17:47
mainForm.AddNewEvent(editInput, tbeOnChange, 'EditOnChange');
void EditOnChange {
  ChangeImg;
}

OnChange durumda olması fazla kullanıcının bulunduğu bir seneryoda sisteme yük bindirir mi ? 

Editin nasıl kullanılması gerektiğini daha iyi anladım teşşekür ederim.




Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 16 Eylül 2025 Saat 18:25

Evet Güney,

OnChange olayı her veri girişinde tetiklendiği için yoğun kullanımda sunucuya gereksiz yük bindirebilir ve performans sorunları yaratabilir.

OnExit veya Buton ile tetikleme kullanmak daha kontrollü ve performanslı bir çözümdür; işlem yalnızca kullanıcı bilinçli olarak başlattığında çalışır.




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