Sayfayı Yazdır | Pencereyi Kapat

if döngüsünde kontrol etme

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=1217
Tarih: 07 Kasım 2025 Saat 18:17
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: if döngüsünde kontrol etme
Mesajı Yazan: M-Guney
Konu: if döngüsünde kontrol etme
Mesaj Tarihi: 07 Kasım 2025 Saat 11:46

IsArrayContain fonksiyonum bana boolean bir değer döndürüyor eğer ki benim iki yetkim de olursa sorunsuzca istiefğim sayfaya yönelendiriyor fakat eğer ki benim bu yetkilerden birine sahipsem yönlendirme yapmıyor.


    ShowMessage('Privileges output: '+ jsonResponse);
      
      if((Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'VIEW_ORDERS')) && (Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'TAKE_PAYMENT')))
      {
          Clomosy.RunUnit('SelectRoleV');
      }
      else if(Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'VIEW_ORDERS')){
        Clomosy.RunUnit('uWaiter&ChefDetails');
      }
      else if(Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'TAKE_PAYMENT')){
        Clomosy.RunUnit('uCashierDetails');
      }
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 14:27
Merhaba Güney,
Muhtemel hata,
Boolean döndürmüyor, 
else if koşullarını yanlış değerlendiriyor olabilir ya da JSON parsing hatası olabilir. 

https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 14:34
Kodun bir önce ki ve kalan kısmını da paylaşabilir misin? https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 14:39
void CheckPrivileges
var
  hasViewOrders: Boolean;
  hasTakePayment: Boolean;
{
  Try
    ShowMessage('Privileges output: ' + jsonResponse);
    
    hasViewOrders = Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'VIEW_ORDERS');
    hasTakePayment = Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'TAKE_PAYMENT');
    
    if (hasViewOrders && hasTakePayment)
    {
      Clomosy.RunUnit('SelectRoleV');
    }
    else if (hasViewOrders)
    {
      Clomosy.RunUnit('uWaiter&ChefDetails');
    }
    else if (hasTakePayment)
    {
      Clomosy.RunUnit('uCashierDetails');
    }
    else
    {
      ShowMessage('Hiçbir yetki bulunamadı');
    }
  except
    ShowMessage('Exception: ' + LastExceptionMessage);
  }


inceleyip dener misin
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">


Mesajı Yazan: M-Guney
Mesaj Tarihi: 07 Kasım 2025 Saat 15:34
Kodun bulundguğu kısım


void GetUserPrivilegesCompletedV
var
  jsonResponse: String;
  Arr : TCLJSONArray;
  I: Integer;
{
  jsonResponse = TCRest.Response
  ShowMessage(jsonResponse);
  Arr = TCLJSONArray.Create;
Arr = TCLJSONArray.CreateFromJSON(jsonResponse);
  if(jsonResponse == ''){
    ShowMessage('Yetkiler listesi boş herhangi bir yetki yok.')
  }else{
    //ShowMessage('Privileges output: '+ jsonResponse);
      
      if((Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'VIEW_ORDERS')) && (Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'TAKE_PAYMENT')))
      {
          Clomosy.RunUnit('SelectRoleV');
      }
      else if(Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'VIEW_ORDERS')){
        ShowMessage(TClProButton(MainForm.Clsender).clTagStr);
        Clomosy.RunUnit('uWaiterAndChefDetails');
        //uWaiterAndChefDetails.SetTitleV();
        
      }
      else if(Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'TAKE_PAYMENT')){
        Clomosy.RunUnit('uCashierDetails');
      }
      /*
    for (I=0 to Arr.Count -1)
    {
    }
      if(Clomosy.CLParseJSON(FJson, IntToStr(I) + '.privilege_name') == 'VIEW_ORDERS'){
        if(Clomosy.CLParseJSON(FJson, IntToStr(I) + '.privilege_name') == 'TAKE_PAYMENT'){
          Clomosy.RunUnit('SelectRoleV');}
        else {
        Clomosy.RunUnit('uWaiterAndChefDetails');}
      }
      else if(Clomosy.CLParseJSON(FJson, IntToStr(I) + '.privilege_name') == 'TAKE_PAYMENT'){
        if(Clomosy.CLParseJSON(FJson, IntToStr(I) + '.privilege_name') == 'VIEW_ORDERS'){
          Clomosy.RunUnit('SelectRoleV');}
        else {
        Clomosy.RunUnit('uCashierDetails');}
      }
      
    }
    
*/
  }
  
}

Maindeki fonksiyonum 

function IsArrayContain(FArr : TCLJSONArray; FJson, FArrayItem, FLookingStr : String): Boolean;
  var 
    I : Integer;
    IsValid : Boolean;
  {
   if((Clomosy.CLParseJSON(FJson, IntToStr(I) + '.'+ FArrayItem) <> '') || (Clomosy.CLParseJSON(FJson, IntToStr(I) + '.'+ FArrayItem) <> nil))
   {
    IsValid = true
   }
   if(IsValid){
     for(I=0 to FArr.Count-1) 
     {
        if(Clomosy.CLParseJSON(FJson, IntToStr(I) + '.'+ FArrayItem) == FLookingStr)
        {
          Result = True;
        }
      }
    }else Result = False;
}



https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 16:29
Güney tespit ettiğim problemler;
Result başlangıçta False olarak ayarlanmamış
 Döngü içinde Exit komutu yok , bu yüzden gereksiz yere tüm döngüyü dolaşıyor
 || yerine && kullanman 

function IsArrayContain(FArr: TCLJSONArray; FJson: String; FArrayItem: String; FLookingStr: String): Boolean
var
  I: Integer;
  currentValue: String;
{
  Result = False;
  
  Try
    if (FArr == nil)
    {
      Result = False;
      Exit;
    }
    
    if (FJson == '')
    {
      Result = False;
      Exit;
    }
    
    for (I = 0 to (FArr.Count - 1))
    {
      Try
        currentValue = Clomosy.CLParseJSON(FJson, IntToStr(I) + '.' + FArrayItem);
        
        
        if (currentValue == FLookingStr)
        {
          Result = True;
          Exit; 
        }
      except
      }
  }
  except
    Result = False;
  }
}


void GetUserPrivilegesCompletedV
var
  jsonResponse: String;
  Arr: TCLJSONArray;
  I: Integer;
  hasViewOrders: Boolean;
  hasTakePayment: Boolean;
{
  Try
    jsonResponse = TCRest.Response; 
    
    ShowMessage('Privileges JSON: ' + jsonResponse);
    
    Arr = TCLJSONArray.Create;
    Arr = TCLJSONArray.CreateFromJSON(jsonResponse);
    
    if (jsonResponse == '')
    {
      ShowMessage('Yetkiler listesi boş herhangi bir yetki yok.');
    }
    else
    {
      hasViewOrders = Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'VIEW_ORDERS');
      hasTakePayment = Main.IsArrayContain(Arr, jsonResponse, 'privilege_name', 'TAKE_PAYMENT');
      
      ShowMessage(hasViewOrders); // debug 
      ShowMessage(hasTakePayment);  // debug
      
      if (hasViewOrders && hasTakePayment)
      {
        Clomosy.RunUnit('SelectRoleV');
      }
      else if (hasViewOrders)
      {
        Clomosy.RunUnit('uWaiterAndChefDetails');
      }
      else if (hasTakePayment)
      {
        ShowMessage('→ uCashierDetails sayfasına yönlendiriliyor');
        Clomosy.RunUnit('uCashierDetails');
      }
      else
      {
        ShowMessage('Uyarı: Hiçbir yetki bulunamadı!');
      }
    }
    
    if (Arr <> nil)
    {
      Try
        Arr.Free;
        Arr = nil;
      except
      }
    }
  except
    ShowMessage('Exception Class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }


kodunla karşılaştırıp bakabilir misin 
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 16:32
  if((Clomosy.CLParseJSON(FJson, IntToStr(I) + '.'+ FArrayItem) <> '') || (Clomosy.CLParseJSON(FJson, IntToStr(I) + '.'+ FArrayItem) <> nil))
   {
    IsValid = true
   } 

burada ki kontrolün her zaman true dönüyor mu? 


https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">


Mesajı Yazan: M-Guney
Mesaj Tarihi: 07 Kasım 2025 Saat 17:31
Hayır eğer ki iki yetkiye de sahipse yönlendirebiliyorum fakat tek bir yetkiye sahipse herhangi bir şekilde yönlendirme yapamıyorum.

Fakat eğer ki sadece birine sahipse problem olmuyor.


Mesajı Yazan: M-Guney
Mesaj Tarihi: 07 Kasım 2025 Saat 17:34
Sizin kodunuzla beraber kontolu doğru şekilde yapabildim teşekkürler. https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



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