Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Clomosy ile değişken kullanımı
  Aktif Konular Aktif Konular RSS - kod hatası
  SSS SSS  Forumu Ara   Etkinlikler   Kayıt Ol Kayıt Ol  Giriş Giriş

Clomosy Resmi Forum Sitesidir. Amacımız kullanıcılarımıza, iş ortaklarımıza, danışmanlara, yazılımcılara programlarımız hakkında destek ve bilgi vermektir.

kod hatası

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
  Konu Arama Konu Arama  Topic Seçenekleri Topic Seçenekleri
Hüseyin_Sadik Açılır Kutu İzle
Yeni Üye
Yeni Üye
Simge

Kayıt Tarihi: 03 Aralık 2025
Durum: Aktif Değil
Puanlar: 12
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Hüseyin_Sadik Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: kod hatası
    Gönderim Zamanı: 6 Saat 1 Dakika Önce Saat 12:26
    var
      MyForm: TclForm;
      CanliMQTT: TclMQTT;
      PnlMain, PnlHeader, PnlContent, PnlLeft, PnlRight: TclProPanel;
      PnlStatus, PnlControls, PnlAnswers, PnlWinner: TclProPanel;
      LblTitle, LblSubTitle, LblKirmiziDurum, LblMaviDurum: TclProLabel;
      LblSoruText, LblKirmiziCevap, LblMaviCevap, LblWinner: TclProLabel;
      BtnBaslat, BtnKontrolEt, BtnYonlendir, BtnSonrakiSoru: TclProButton;
      MemoLog: TclMemo;
      KirmiziHazir, MaviHazir: Boolean;
      KirmiziCevap, MaviCevap: String;
      KirmiziDogru, MaviDogru: Boolean;
      KirmiziSure, MaviSure: Integer;
      KazananRengi: String;
      SoruAktif: Boolean;
      SoruMetni, SecenekA, SecenekB, SecenekC, SecenekD, DogruCevap: String;
      GelenMesaj, Komut, GelenRenk, GelenCevap, GelenSureStr: String;

{
  if (Clomosy.PlatformIsMobile)
  {
    Clomosy.RunUnit('renksec');
  }
  else
  {
    void MQTTMesajGelince;
    {
      if (CanliMQTT.ReceivedAlright)
      {
        GelenMesaj = CanliMQTT.ReceivedMessage;
        Komut = clGetStringTo(GelenMesaj, '|');
        
        if (Komut == 'RENK_SEC')
        {
          GelenRenk = clGetStringAfter(GelenMesaj, '|');
          if (GelenRenk == 'Kirmizi')
          {
            KirmiziHazir = True;
            LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
            LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clLime;
            LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
            MemoLog.Lines.Add('✓ Kırmızı oyuncu hazır');
          }
          else if (GelenRenk == 'Mavi')
          {
            MaviHazir = True;
            LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
            LblMaviDurum.clProSettings.FontColor = clAlphaColor.clLime;
            LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
            MemoLog.Lines.Add('✓ Mavi oyuncu hazır');
          }
          
          if (KirmiziHazir and MaviHazir)
          {
            BtnBaslat.Enabled = True;
          }
        }
        
        if (Komut == 'CEVAP')
        {
          GelenRenk = clGetStringTo(clGetStringAfter(GelenMesaj, '|'), '|');
          GelenCevap = clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|');
          GelenSureStr = clGetStringAfter(clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|'), '|');
          
          if (GelenRenk == 'Kirmizi')
          {
            KirmiziCevap = GelenCevap;
            KirmiziSure = StrToInt(GelenSureStr);
            LblKirmiziCevap.Text = '🔴 Kırmızı: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
            MemoLog.Lines.Add('📝 Kırmızı cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
          }
          else if (GelenRenk == 'Mavi')
          {
            MaviCevap = GelenCevap;
            MaviSure = StrToInt(GelenSureStr);
            LblMaviCevap.Text = '🔵 Mavi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
            MemoLog.Lines.Add('📝 Mavi cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
          }
          
          if (KirmiziCevap <> '' and MaviCevap <> '')
          {
            BtnKontrolEt.Enabled = True;
          }
        }
      }
    }

    void YarismayiBaslat;
    {
      if (not KirmiziHazir)
      {
        ShowMessage('Kırmızı oyuncu hazır değil!');
        return;
      }
      if (not MaviHazir)
      {
        ShowMessage('Mavi oyuncu hazır değil!');
        return;
      }
      
      SoruMetni = 'Türkiye''nin başkenti neresidir?';
      SecenekA = 'İstanbul';
      SecenekB = 'Ankara';
      SecenekC = 'İzmir';
      SecenekD = 'Bursa';
      DogruCevap = 'B';
      
      LblSoruText.Text = SoruMetni;
      
      KirmiziCevap = '';
      MaviCevap = '';
      KirmiziDogru = False;
      MaviDogru = False;
      KirmiziSure = 0;
      MaviSure = 0;
      BtnKontrolEt.Enabled = False;
      BtnYonlendir.Enabled = False;
      SoruAktif = True;
      
      LblKirmiziCevap.Text = '🔴 Kırmızı: Bekleniyor...';
      LblMaviCevap.Text = '🔵 Mavi: Bekleniyor...';
      
      CanliMQTT.Send('SORU|' + SoruMetni + '|' + SecenekA + '|' + SecenekB + '|' + SecenekC + '|' + SecenekD);
      
      MemoLog.Lines.Add('🚀 Yarışma başlatıldı! Soru gönderildi.');
      BtnBaslat.Enabled = False;
    }

    void CevapKontrolEt;
    {
      if (KirmiziCevap == DogruCevap)
      {
        KirmiziDogru = True;
        MemoLog.Lines.Add('✅ Kırmızı DOĞRU cevap verdi!');
      }
      else
      {
        KirmiziDogru = False;
        MemoLog.Lines.Add('❌ Kırmızı YANLIŞ cevap verdi!');
      }
      
      if (MaviCevap == DogruCevap)
      {
        MaviDogru = True;
        MemoLog.Lines.Add('✅ Mavi DOĞRU cevap verdi!');
      }
      else
      {
        MaviDogru = False;
        MemoLog.Lines.Add('❌ Mavi YANLIŞ cevap verdi!');
      }
      
      if (KirmiziDogru and not MaviDogru)
      {
        KazananRengi = 'Kirmizi';
        LblWinner.Text = '🏆 KAZANAN: KIRMIZI 🏆';
        MemoLog.Lines.Add('🏆 Kırmızı kazandı!');
        BtnYonlendir.Enabled = True;
      }
      else if (MaviDogru and not KirmiziDogru)
      {
        KazananRengi = 'Mavi';
        LblWinner.Text = '🏆 KAZANAN: MAVİ 🏆';
        MemoLog.Lines.Add('🏆 Mavi kazandı!');
        BtnYonlendir.Enabled = True;
      }
      else if (KirmiziDogru and MaviDogru)
      {
        if (KirmiziSure < MaviSure)
        {
          KazananRengi = 'Kirmizi';
          LblWinner.Text = '🏆 KAZANAN: KIRMIZI (daha hızlı) 🏆';
          MemoLog.Lines.Add('🏆 Kırmızı daha hızlı cevap verdi ve kazandı!');
        }
        else if (MaviSure < KirmiziSure)
        {
          KazananRengi = 'Mavi';
          LblWinner.Text = '🏆 KAZANAN: MAVİ (daha hızlı) 🏆';
          MemoLog.Lines.Add('🏆 Mavi daha hızlı cevap verdi ve kazandı!');
        }
        else
        {
          KazananRengi = 'Kirmizi';
          LblWinner.Text = '🏆 KAZANAN: KIRMIZI (beraberlik) 🏆';
          MemoLog.Lines.Add('🏆 Beraberlik! Kırmızı kazanan sayıldı.');
        }
        BtnYonlendir.Enabled = True;
      }
      else
      {
        LblWinner.Text = '❌ İKİSİ DE YANLIŞ! Yeni soruya geçiliyor...';
        MemoLog.Lines.Add('❌ İkisi de yanlış cevap verdi!');
        BtnSonrakiSoru.Enabled = True;
      }
      
      if (KirmiziDogru)
      {
        CanliMQTT.Send('SONUC|Kirmizi|Dogru');
      }
      else
      {
        CanliMQTT.Send('SONUC|Kirmizi|Yanlis');
      }
        
      if (MaviDogru)
      {
        CanliMQTT.Send('SONUC|Mavi|Dogru');
      }
      else
      {
        CanliMQTT.Send('SONUC|Mavi|Yanlis');
      }
        
      BtnKontrolEt.Enabled = False;
    }

    void Yonlendir;
    {
      if (KazananRengi == 'Kirmizi')
      {
        CanliMQTT.Send('YONLENDIR|Kirmizi|RobotKontrol');
        CanliMQTT.Send('YONLENDIR|Mavi|RobotBekle');
        MemoLog.Lines.Add('🎮 Kırmızı robot kontrolüne yönlendirildi, Mavi beklemeye alındı.');
      }
      else if (KazananRengi == 'Mavi')
      {
        CanliMQTT.Send('YONLENDIR|Mavi|RobotKontrol');
        CanliMQTT.Send('YONLENDIR|Kirmizi|RobotBekle');
        MemoLog.Lines.Add('🎮 Mavi robot kontrolüne yönlendirildi, Kırmızı beklemeye alındı.');
      }
      
      BtnYonlendir.Enabled = False;
      BtnSonrakiSoru.Enabled = True;
    }

    void RobotBitti;
    {
      MemoLog.Lines.Add('✅ Robot işlemi tamamlandı. Sıradaki soruya hazırlanılıyor.');
      CanliMQTT.Send('ROBOT_BITTI');
      
      KirmiziHazir = True;
      MaviHazir = True;
      KirmiziCevap = '';
      MaviCevap = '';
      KirmiziDogru = False;
      MaviDogru = False;
      
      LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
      LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
      BtnBaslat.Enabled = True;
      BtnSonrakiSoru.Enabled = False;
    }

    void SonrakiSorunaGit;
    {
      SoruAktif = False;
      LblWinner.Text = '🏆 Yeni soruya hazırlanılıyor...';
      BtnSonrakiSoru.Enabled = False;
      MemoLog.Lines.Add('➡️ Yeni soruya geçmek için "Yarışmayı Başlat" butonuna basın.');
    }

    {
      MyForm = TclForm.Create(Self);
      MyForm.LytTopBar.Visible = False;
      MyForm.SetFormColor('#0F172A', '', clGNone);
      
      CanliMQTT = MyForm.AddNewMQTTConnection(MyForm, 'CanliMQTT');
      CanliMQTT.Channel = 'Yarisma2026_App';
      MyForm.AddNewEvent(CanliMQTT, tbeOnMQTTPublishReceived, 'MQTTMesajGelince');
      CanliMQTT.Connect;
      
      PnlMain = MyForm.AddNewProPanel(MyForm, 'PnlMain');
      PnlMain.Align = alClient;
      PnlMain.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A');
      PnlMain.SetclProSettings(PnlMain.clProSettings);
      
      PnlHeader = MyForm.AddNewProPanel(PnlMain, 'PnlHeader');
      PnlHeader.Align = alTop;
      PnlHeader.Height = 80;
      PnlHeader.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlHeader.SetclProSettings(PnlHeader.clProSettings);
      
      LblTitle = MyForm.AddNewProLabel(PnlHeader, 'LblTitle', '🏁 YARIŞMA ADMIN PANELİ');
      LblTitle.Align = alTop;
      LblTitle.Height = 35;
      LblTitle.Margins.Top = 15;
      LblTitle.Margins.Left = 20;
      LblTitle.clProSettings.FontColor = clAlphaColor.clWhite;
      LblTitle.clProSettings.FontSize = 18;
      LblTitle.clProSettings.TextSettings.Font.Style = [fsBold];
      LblTitle.SetclProSettings(LblTitle.clProSettings);
      
      LblSubTitle = MyForm.AddNewProLabel(PnlHeader, 'LblSubTitle', 'MQTT ile Canlı Yarışma Yönetimi');
      LblSubTitle.Align = alTop;
      LblSubTitle.Height = 20;
      LblSubTitle.Margins.Left = 20;
      LblSubTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#818CF8');
      LblSubTitle.clProSettings.FontSize = 12;
      LblSubTitle.SetclProSettings(LblSubTitle.clProSettings);
      
      PnlContent = MyForm.AddNewProPanel(PnlMain, 'PnlContent');
      PnlContent.Align = alClient;
      PnlContent.Margins.Left = 20;
      PnlContent.Margins.Right = 20;
      PnlContent.Margins.Top = 20;
      PnlContent.Margins.Bottom = 20;
      
      PnlRight = MyForm.AddNewProPanel(PnlContent, 'PnlRight');
      PnlRight.Align = alRight;
      PnlRight.Width = 350;
      PnlRight.Margins.Left = 20;
      
      MemoLog = MyForm.AddNewMemo(PnlRight, 'MemoLog', '');
      MemoLog.Align = alClient;
      MemoLog.ReadOnly = True;
      MemoLog.Lines.Add('=== YARIŞMA LOGU ===');
      
      PnlLeft = MyForm.AddNewProPanel(PnlContent, 'PnlLeft');
      PnlLeft.Align = alClient;
      
      PnlStatus = MyForm.AddNewProPanel(PnlLeft, 'PnlStatus');
      PnlStatus.Align = alTop;
      PnlStatus.Height = 100;
      PnlStatus.Margins.Bottom = 20;
      PnlStatus.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlStatus.clProSettings.RoundHeight = 15;
      PnlStatus.clProSettings.RoundWidth = 15;
      PnlStatus.SetclProSettings(PnlStatus.clProSettings);
      
      LblKirmiziDurum = MyForm.AddNewProLabel(PnlStatus, 'LblKirmiziDurum', '🔴 KIRMIZI: BEKLİYOR');
      LblKirmiziDurum.Align = alLeft;
      LblKirmiziDurum.Width = 200;
      LblKirmiziDurum.Margins.Top = 20;
      LblKirmiziDurum.Margins.Left = 20;
      LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clRed;
      LblKirmiziDurum.clProSettings.FontSize = 16;
      LblKirmiziDurum.clProSettings.TextSettings.Font.Style = [fsBold];
      LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
      
      LblMaviDurum = MyForm.AddNewProLabel(PnlStatus, 'LblMaviDurum', '🔵 MAVİ: BEKLİYOR');
      LblMaviDurum.Align = alRight;
      LblMaviDurum.Width = 200;
      LblMaviDurum.Margins.Top = 20;
      LblMaviDurum.Margins.Right = 20;
      LblMaviDurum.clProSettings.FontColor = clAlphaColor.clBlue;
      LblMaviDurum.clProSettings.FontSize = 16;
      LblMaviDurum.clProSettings.TextSettings.Font.Style = [fsBold];
      LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
      
      PnlAnswers = MyForm.AddNewProPanel(PnlLeft, 'PnlAnswers');
      PnlAnswers.Align = alTop;
      PnlAnswers.Height = 200;
      PnlAnswers.Margins.Bottom = 20;
      PnlAnswers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlAnswers.clProSettings.RoundHeight = 15;
      PnlAnswers.clProSettings.RoundWidth = 15;
      PnlAnswers.SetclProSettings(PnlAnswers.clProSettings);
      
      LblSoruText = MyForm.AddNewProLabel(PnlAnswers, 'LblSoruText', 'Soru burada görünecek...');
      LblSoruText.Align = alTop;
      LblSoruText.Height = 50;
      LblSoruText.Margins.Top = 15;
      LblSoruText.Margins.Left = 15;
      LblSoruText.clProSettings.FontColor = clAlphaColor.clWhite;
      LblSoruText.clProSettings.FontSize = 16;
      LblSoruText.clProSettings.TextSettings.Font.Style = [fsBold];
      LblSoruText.SetclProSettings(LblSoruText.clProSettings);
      
      LblKirmiziCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblKirmiziCevap', '🔴 Kırmızı: Bekleniyor...');
      LblKirmiziCevap.Align = alTop;
      LblKirmiziCevap.Height = 30;
      LblKirmiziCevap.Margins.Left = 15;
      LblKirmiziCevap.Margins.Top = 10;
      LblKirmiziCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#FCA5A5');
      LblKirmiziCevap.SetclProSettings(LblKirmiziCevap.clProSettings);
      
      LblMaviCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblMaviCevap', '🔵 Mavi: Bekleniyor...');
      LblMaviCevap.Align = alTop;
      LblMaviCevap.Height = 30;
      LblMaviCevap.Margins.Left = 15;
      LblMaviCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#93C5FD');
      LblMaviCevap.SetclProSettings(LblMaviCevap.clProSettings);
      
      PnlWinner = MyForm.AddNewProPanel(PnlLeft, 'PnlWinner');
      PnlWinner.Align = alTop;
      PnlWinner.Height = 80;
      PnlWinner.Margins.Bottom = 20;
      PnlWinner.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
      PnlWinner.clProSettings.RoundHeight = 15;
      PnlWinner.clProSettings.RoundWidth = 15;
      PnlWinner.SetclProSettings(PnlWinner.clProSettings);
      
      LblWinner = MyForm.AddNewProLabel(PnlWinner, 'LblWinner', '🏆 Kazanan henüz belli değil');
      LblWinner.Align = alClient;
      LblWinner.clProSettings.FontColor = clAlphaColor.clYellow;
      LblWinner.clProSettings.FontSize = 18;
      LblWinner.clProSettings.FontHorzAlign = palCenter;
      LblWinner.clProSettings.TextSettings.Font.Style = [fsBold];
      LblWinner.SetclProSettings(LblWinner.clProSettings);
      
      PnlControls = MyForm.AddNewProPanel(PnlLeft, 'PnlControls');
      PnlControls.Align = alTop;
      PnlControls.Height = 60;
      
      BtnBaslat = MyForm.AddNewProButton(PnlControls, 'BtnBaslat', '🚦 YARIŞMAYI BAŞLAT');
      BtnBaslat.Align = alLeft;
      BtnBaslat.Width = 180;
      BtnBaslat.Height = 50;
      BtnBaslat.Margins.Right = 10;
      BtnBaslat.Enabled = False;
      BtnBaslat.clProSettings.BackgroundColor = clAlphaColor.clGreen;
      BtnBaslat.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnBaslat.clProSettings.RoundHeight = 10;
      BtnBaslat.clProSettings.RoundWidth = 10;
      BtnBaslat.SetclProSettings(BtnBaslat.clProSettings);
      MyForm.AddNewEvent(BtnBaslat, tbeOnClick, 'YarismayiBaslat');
      
      BtnKontrolEt = MyForm.AddNewProButton(PnlControls, 'BtnKontrolEt', '✅ CEVAPLARI KONTROL ET');
      BtnKontrolEt.Align = alLeft;
      BtnKontrolEt.Width = 180;
      BtnKontrolEt.Height = 50;
      BtnKontrolEt.Margins.Right = 10;
      BtnKontrolEt.Enabled = False;
      BtnKontrolEt.clProSettings.BackgroundColor = clAlphaColor.clBlue;
      BtnKontrolEt.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnKontrolEt.clProSettings.RoundHeight = 10;
      BtnKontrolEt.clProSettings.RoundWidth = 10;
      BtnKontrolEt.SetclProSettings(BtnKontrolEt.clProSettings);
      MyForm.AddNewEvent(BtnKontrolEt, tbeOnClick, 'CevapKontrolEt');
      
      BtnYonlendir = MyForm.AddNewProButton(PnlControls, 'BtnYonlendir', '🎮 YÖNLENDİR');
      BtnYonlendir.Align = alLeft;
      BtnYonlendir.Width = 150;
      BtnYonlendir.Height = 50;
      BtnYonlendir.Margins.Right = 10;
      BtnYonlendir.Enabled = False;
      BtnYonlendir.clProSettings.BackgroundColor = clAlphaColor.clPurple;
      BtnYonlendir.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnYonlendir.clProSettings.RoundHeight = 10;
      BtnYonlendir.clProSettings.RoundWidth = 10;
      BtnYonlendir.SetclProSettings(BtnYonlendir.clProSettings);
      MyForm.AddNewEvent(BtnYonlendir, tbeOnClick, 'Yonlendir');
      
      BtnSonrakiSoru = MyForm.AddNewProButton(PnlControls, 'BtnSonrakiSoru', '⏩ SONRAKİ SORU');
      BtnSonrakiSoru.Align = alLeft;
      BtnSonrakiSoru.Width = 150;
      BtnSonrakiSoru.Height = 50;
      BtnSonrakiSoru.Enabled = False;
      BtnSonrakiSoru.clProSettings.BackgroundColor = clAlphaColor.clOrange;
      BtnSonrakiSoru.clProSettings.FontColor = clAlphaColor.clWhite;
      BtnSonrakiSoru.clProSettings.RoundHeight = 10;
      BtnSonrakiSoru.clProSettings.RoundWidth = 10;
      BtnSonrakiSoru.SetclProSettings(BtnSonrakiSoru.clProSettings);
      MyForm.AddNewEvent(BtnSonrakiSoru, tbeOnClick, 'SonrakiSorunaGit');
      
      KirmiziHazir = False;
      MaviHazir = False;
      SoruAktif = False;
      KirmiziCevap = '';
      MaviCevap = '';
      
      MyForm.Run;
    }
  }
}

bunun neden çalışmadığını hala anlamadımAngry
< defer="" ="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" -cf-beacon=""version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"_timing":"name":"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true,"location_startswith":null" crossorigin="anonymous">
Yukarı Dön
kaanl0 Açılır Kutu İzle
Kıdemli Üye
Kıdemli Üye
Simge

Kayıt Tarihi: 16 Eylül 2025
Konum: konya
Durum: Aktif Değil
Puanlar: 188
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı kaanl0 Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 1 saat 43 Dakika Önce Saat 16:44
Merhaba birkaç hatan var.  MQTTMesajGelince prosedürünü else bloğunun içine yazmışsın. 2. hata if sorgularında and yerine && kullanıyoruz. Hataları düzeltip iletiyorum şuanda hata almıyoruz.

var
  MyForm: TclForm;
  CanliMQTT: TclMQTT;
  PnlMain, PnlHeader, PnlContent, PnlLeft, PnlRight: TclProPanel;
  PnlStatus, PnlControls, PnlAnswers, PnlWinner: TclProPanel;
  LblTitle, LblSubTitle, LblKirmiziDurum, LblMaviDurum: TclProLabel;
  LblSoruText, LblKirmiziCevap, LblMaviCevap, LblWinner: TclProLabel;
  BtnBaslat, BtnKontrolEt, BtnYonlendir, BtnSonrakiSoru: TclProButton;
  MemoLog: TclMemo;
  KirmiziHazir, MaviHazir: Boolean;
  KirmiziCevap, MaviCevap: String;
  KirmiziDogru, MaviDogru: Boolean;
  KirmiziSure, MaviSure: Integer;
  KazananRengi: String;
  SoruAktif: Boolean;
  SoruMetni, SecenekA, SecenekB, SecenekC, SecenekD, DogruCevap: String;
  GelenMesaj, Komut, GelenRenk, GelenCevap, GelenSureStr: String;

// ============================================================================
//   FONKSİYON TANIMLAMALARI
// ============================================================================

void MQTTMesajGelince;
{
  if (CanliMQTT.ReceivedAlright)
  {
    GelenMesaj = CanliMQTT.ReceivedMessage;
    Komut = clGetStringTo(GelenMesaj, '|');
    
    if (Komut == 'RENK_SEC')
    {
      GelenRenk = clGetStringAfter(GelenMesaj, '|');
      if (GelenRenk == 'Kirmizi')
      {
        KirmiziHazir = True;
        LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
        LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clLime;
        LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
        MemoLog.Lines.Add('✓ Kırmızı oyuncu hazır');
      }
      else if (GelenRenk == 'Mavi')
      {
        MaviHazir = True;
        LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
        LblMaviDurum.clProSettings.FontColor = clAlphaColor.clLime;
        LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
        MemoLog.Lines.Add('✓ Mavi oyuncu hazır');
      }
      
      // DÜZELTME: and yerine &&
      if ((KirmiziHazir == True) && (MaviHazir == True))
      {
        BtnBaslat.Enabled = True;
      }
    }
    
    if (Komut == 'CEVAP')
    {
      GelenRenk = clGetStringTo(clGetStringAfter(GelenMesaj, '|'), '|');
      GelenCevap = clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|');
      GelenSureStr = clGetStringAfter(clGetStringAfter(clGetStringAfter(GelenMesaj, '|'), '|'), '|');
      
      if (GelenRenk == 'Kirmizi')
      {
        KirmiziCevap = GelenCevap;
        KirmiziSure = StrToInt(GelenSureStr);
        LblKirmiziCevap.Text = '🔴 Kırmızı: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
        MemoLog.Lines.Add('📝 Kırmızı cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
      }
      else if (GelenRenk == 'Mavi')
      {
        MaviCevap = GelenCevap;
        MaviSure = StrToInt(GelenSureStr);
        LblMaviCevap.Text = '🔵 Mavi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)';
        MemoLog.Lines.Add('📝 Mavi cevap verdi: ' + GelenCevap + ' (' + GelenSureStr + ' sn)');
      }
      
      // DÜZELTME: and yerine &&
      if ((KirmiziCevap <> '') && (MaviCevap <> ''))
      {
        BtnKontrolEt.Enabled = True;
      }
    }
  }
}

void YarismayiBaslat;
{
  // DÜZELTME: not yerine == False
  if (KirmiziHazir == False)
  {
    ShowMessage('Kırmızı oyuncu hazır değil!');
    Exit;
  }
  if (MaviHazir == False)
  {
    ShowMessage('Mavi oyuncu hazır değil!');
    Exit;
  }
  
  SoruMetni = 'Türkiye''nin başkenti neresidir?';
  SecenekA = 'İstanbul';
  SecenekB = 'Ankara';
  SecenekC = 'İzmir';
  SecenekD = 'Bursa';
  DogruCevap = 'B';
  
  LblSoruText.Text = SoruMetni;
  
  KirmiziCevap = '';
  MaviCevap = '';
  KirmiziDogru = False;
  MaviDogru = False;
  KirmiziSure = 0;
  MaviSure = 0;
  BtnKontrolEt.Enabled = False;
  BtnYonlendir.Enabled = False;
  SoruAktif = True;
  
  LblKirmiziCevap.Text = '🔴 Kırmızı: Bekleniyor...';
  LblMaviCevap.Text = '🔵 Mavi: Bekleniyor...';
  
  CanliMQTT.Send('SORU|' + SoruMetni + '|' + SecenekA + '|' + SecenekB + '|' + SecenekC + '|' + SecenekD);
  
  MemoLog.Lines.Add('🚀 Yarışma başlatıldı! Soru gönderildi.');
  BtnBaslat.Enabled = False;
}

void CevapKontrolEt;
{
  if (KirmiziCevap == DogruCevap)
  {
    KirmiziDogru = True;
    MemoLog.Lines.Add('✅ Kırmızı DOĞRU cevap verdi!');
  }
  else
  {
    KirmiziDogru = False;
    MemoLog.Lines.Add('❌ Kırmızı YANLIŞ cevap verdi!');
  }
  
  if (MaviCevap == DogruCevap)
  {
    MaviDogru = True;
    MemoLog.Lines.Add('✅ Mavi DOĞRU cevap verdi!');
  }
  else
  {
    MaviDogru = False;
    MemoLog.Lines.Add('❌ Mavi YANLIŞ cevap verdi!');
  }
  
  // DÜZELTMELER: and yerine &&, not yerine == False
  if ((KirmiziDogru == True) && (MaviDogru == False))
  {
    KazananRengi = 'Kirmizi';
    LblWinner.Text = '🏆 KAZANAN: KIRMIZI 🏆';
    MemoLog.Lines.Add('🏆 Kırmızı kazandı!');
    BtnYonlendir.Enabled = True;
  }
  else if ((MaviDogru == True) && (KirmiziDogru == False))
  {
    KazananRengi = 'Mavi';
    LblWinner.Text = '🏆 KAZANAN: MAVİ 🏆';
    MemoLog.Lines.Add('🏆 Mavi kazandı!');
    BtnYonlendir.Enabled = True;
  }
  else if ((KirmiziDogru == True) && (MaviDogru == True))
  {
    if (KirmiziSure < MaviSure)
    {
      KazananRengi = 'Kirmizi';
      LblWinner.Text = '🏆 KAZANAN: KIRMIZI (daha hızlı) 🏆';
      MemoLog.Lines.Add('🏆 Kırmızı daha hızlı cevap verdi ve kazandı!');
    }
    else if (MaviSure < KirmiziSure)
    {
      KazananRengi = 'Mavi';
      LblWinner.Text = '🏆 KAZANAN: MAVİ (daha hızlı) 🏆';
      MemoLog.Lines.Add('🏆 Mavi daha hızlı cevap verdi ve kazandı!');
    }
    else
    {
      KazananRengi = 'Kirmizi';
      LblWinner.Text = '🏆 KAZANAN: KIRMIZI (beraberlik) 🏆';
      MemoLog.Lines.Add('🏆 Beraberlik! Kırmızı kazanan sayıldı.');
    }
    BtnYonlendir.Enabled = True;
  }
  else
  {
    LblWinner.Text = '❌ İKİSİ DE YANLIŞ! Yeni soruya geçiliyor...';
    MemoLog.Lines.Add('❌ İkisi de yanlış cevap verdi!');
    BtnSonrakiSoru.Enabled = True;
  }
  
  if (KirmiziDogru == True)
    CanliMQTT.Send('SONUC|Kirmizi|Dogru');
  else
    CanliMQTT.Send('SONUC|Kirmizi|Yanlis');
    
  if (MaviDogru == True)
    CanliMQTT.Send('SONUC|Mavi|Dogru');
  else
    CanliMQTT.Send('SONUC|Mavi|Yanlis');
    
  BtnKontrolEt.Enabled = False;
}

void Yonlendir;
{
  if (KazananRengi == 'Kirmizi')
  {
    CanliMQTT.Send('YONLENDIR|Kirmizi|RobotKontrol');
    CanliMQTT.Send('YONLENDIR|Mavi|RobotBekle');
    MemoLog.Lines.Add('🎮 Kırmızı robot kontrolüne yönlendirildi, Mavi beklemeye alındı.');
  }
  else if (KazananRengi == 'Mavi')
  {
    CanliMQTT.Send('YONLENDIR|Mavi|RobotKontrol');
    CanliMQTT.Send('YONLENDIR|Kirmizi|RobotBekle');
    MemoLog.Lines.Add('🎮 Mavi robot kontrolüne yönlendirildi, Kırmızı beklemeye alındı.');
  }
  
  BtnYonlendir.Enabled = False;
  BtnSonrakiSoru.Enabled = True;
}

void RobotBitti;
{
  MemoLog.Lines.Add('✅ Robot işlemi tamamlandı. Sıradaki soruya hazırlanılıyor.');
  CanliMQTT.Send('ROBOT_BITTI');
  
  KirmiziHazir = True;
  MaviHazir = True;
  KirmiziCevap = '';
  MaviCevap = '';
  KirmiziDogru = False;
  MaviDogru = False;
  
  LblKirmiziDurum.Text = '🔴 KIRMIZI: HAZIR';
  LblMaviDurum.Text = '🔵 MAVİ: HAZIR';
  BtnBaslat.Enabled = True;
  BtnSonrakiSoru.Enabled = False;
}

void SonrakiSorunaGit;
{
  SoruAktif = False;
  LblWinner.Text = '🏆 Yeni soruya hazırlanılıyor...';
  BtnSonrakiSoru.Enabled = False;
  MemoLog.Lines.Add('➡️ Yeni soruya geçmek için "Yarışmayı Başlat" butonuna basın.');
}

// ============================================================================
//   ANA PROGRAM BLOĞU
// ============================================================================
{
  if (Clomosy.PlatformIsMobile)
  {
    Clomosy.RunUnit('renksec');
  }
  else
  {
    MyForm = TclForm.Create(Self);
    MyForm.LytTopBar.Visible = False;
    MyForm.SetFormColor('#0F172A', '', clGNone);
    
    CanliMQTT = MyForm.AddNewMQTTConnection(MyForm, 'CanliMQTT');
    CanliMQTT.Channel = 'Yarisma2026_App';
    MyForm.AddNewEvent(CanliMQTT, tbeOnMQTTPublishReceived, 'MQTTMesajGelince');
    CanliMQTT.Connect;
    
    PnlMain = MyForm.AddNewProPanel(MyForm, 'PnlMain');
    PnlMain.Align = alClient;
    PnlMain.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#0F172A');
    PnlMain.SetclProSettings(PnlMain.clProSettings);
    
    PnlHeader = MyForm.AddNewProPanel(PnlMain, 'PnlHeader');
    PnlHeader.Align = alTop;
    PnlHeader.Height = 80;
    PnlHeader.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlHeader.SetclProSettings(PnlHeader.clProSettings);
    
    LblTitle = MyForm.AddNewProLabel(PnlHeader, 'LblTitle', '🏁 YARIŞMA ADMIN PANELİ');
    LblTitle.Align = alTop;
    LblTitle.Height = 35;
    LblTitle.Margins.Top = 15;
    LblTitle.Margins.Left = 20;
    LblTitle.clProSettings.FontColor = clAlphaColor.clWhite;
    LblTitle.clProSettings.FontSize = 18;
    LblTitle.clProSettings.TextSettings.Font.Style = [fsBold];
    LblTitle.SetclProSettings(LblTitle.clProSettings);
    
    LblSubTitle = MyForm.AddNewProLabel(PnlHeader, 'LblSubTitle', 'MQTT ile Canlı Yarışma Yönetimi');
    LblSubTitle.Align = alTop;
    LblSubTitle.Height = 20;
    LblSubTitle.Margins.Left = 20;
    LblSubTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#818CF8');
    LblSubTitle.clProSettings.FontSize = 12;
    LblSubTitle.SetclProSettings(LblSubTitle.clProSettings);
    
    PnlContent = MyForm.AddNewProPanel(PnlMain, 'PnlContent');
    PnlContent.Align = alClient;
    PnlContent.Margins.Left = 20;
    PnlContent.Margins.Right = 20;
    PnlContent.Margins.Top = 20;
    PnlContent.Margins.Bottom = 20;
    
    PnlRight = MyForm.AddNewProPanel(PnlContent, 'PnlRight');
    PnlRight.Align = alRight;
    PnlRight.Width = 350;
    PnlRight.Margins.Left = 20;
    
    MemoLog = MyForm.AddNewMemo(PnlRight, 'MemoLog', '');
    MemoLog.Align = alClient;
    MemoLog.ReadOnly = True;
    MemoLog.Lines.Add('=== YARIŞMA LOGU ===');
    
    PnlLeft = MyForm.AddNewProPanel(PnlContent, 'PnlLeft');
    PnlLeft.Align = alClient;
    
    PnlStatus = MyForm.AddNewProPanel(PnlLeft, 'PnlStatus');
    PnlStatus.Align = alTop;
    PnlStatus.Height = 100;
    PnlStatus.Margins.Bottom = 20;
    PnlStatus.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlStatus.clProSettings.RoundHeight = 15;
    PnlStatus.clProSettings.RoundWidth = 15;
    PnlStatus.SetclProSettings(PnlStatus.clProSettings);
    
    LblKirmiziDurum = MyForm.AddNewProLabel(PnlStatus, 'LblKirmiziDurum', '🔴 KIRMIZI: BEKLİYOR');
    LblKirmiziDurum.Align = alLeft;
    LblKirmiziDurum.Width = 200;
    LblKirmiziDurum.Margins.Top = 20;
    LblKirmiziDurum.Margins.Left = 20;
    LblKirmiziDurum.clProSettings.FontColor = clAlphaColor.clRed;
    LblKirmiziDurum.clProSettings.FontSize = 16;
    LblKirmiziDurum.clProSettings.TextSettings.Font.Style = [fsBold];
    LblKirmiziDurum.SetclProSettings(LblKirmiziDurum.clProSettings);
    
    LblMaviDurum = MyForm.AddNewProLabel(PnlStatus, 'LblMaviDurum', '🔵 MAVİ: BEKLİYOR');
    LblMaviDurum.Align = alRight;
    LblMaviDurum.Width = 200;
    LblMaviDurum.Margins.Top = 20;
    LblMaviDurum.Margins.Right = 20;
    LblMaviDurum.clProSettings.FontColor = clAlphaColor.clBlue;
    LblMaviDurum.clProSettings.FontSize = 16;
    LblMaviDurum.clProSettings.TextSettings.Font.Style = [fsBold];
    LblMaviDurum.SetclProSettings(LblMaviDurum.clProSettings);
    
    PnlAnswers = MyForm.AddNewProPanel(PnlLeft, 'PnlAnswers');
    PnlAnswers.Align = alTop;
    PnlAnswers.Height = 200;
    PnlAnswers.Margins.Bottom = 20;
    PnlAnswers.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlAnswers.clProSettings.RoundHeight = 15;
    PnlAnswers.clProSettings.RoundWidth = 15;
    PnlAnswers.SetclProSettings(PnlAnswers.clProSettings);
    
    LblSoruText = MyForm.AddNewProLabel(PnlAnswers, 'LblSoruText', 'Soru burada görünecek...');
    LblSoruText.Align = alTop;
    LblSoruText.Height = 50;
    LblSoruText.Margins.Top = 15;
    LblSoruText.Margins.Left = 15;
    LblSoruText.clProSettings.FontColor = clAlphaColor.clWhite;
    LblSoruText.clProSettings.FontSize = 16;
    LblSoruText.clProSettings.TextSettings.Font.Style = [fsBold];
    LblSoruText.SetclProSettings(LblSoruText.clProSettings);
    
    LblKirmiziCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblKirmiziCevap', '🔴 Kırmızı: Bekleniyor...');
    LblKirmiziCevap.Align = alTop;
    LblKirmiziCevap.Height = 30;
    LblKirmiziCevap.Margins.Left = 15;
    LblKirmiziCevap.Margins.Top = 10;
    LblKirmiziCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#FCA5A5');
    LblKirmiziCevap.SetclProSettings(LblKirmiziCevap.clProSettings);
    
    LblMaviCevap = MyForm.AddNewProLabel(PnlAnswers, 'LblMaviCevap', '🔵 Mavi: Bekleniyor...');
    LblMaviCevap.Align = alTop;
    LblMaviCevap.Height = 30;
    LblMaviCevap.Margins.Left = 15;
    LblMaviCevap.clProSettings.FontColor = clAlphaColor.clHexToColor('#93C5FD');
    LblMaviCevap.SetclProSettings(LblMaviCevap.clProSettings);
    
    PnlWinner = MyForm.AddNewProPanel(PnlLeft, 'PnlWinner');
    PnlWinner.Align = alTop;
    PnlWinner.Height = 80;
    PnlWinner.Margins.Bottom = 20;
    PnlWinner.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1E293B');
    PnlWinner.clProSettings.RoundHeight = 15;
    PnlWinner.clProSettings.RoundWidth = 15;
    PnlWinner.SetclProSettings(PnlWinner.clProSettings);
    
    LblWinner = MyForm.AddNewProLabel(PnlWinner, 'LblWinner', '🏆 Kazanan henüz belli değil');
    LblWinner.Align = alClient;
    LblWinner.clProSettings.FontColor = clAlphaColor.clYellow;
    LblWinner.clProSettings.FontSize = 18;
    LblWinner.clProSettings.FontHorzAlign = palCenter;
    LblWinner.clProSettings.TextSettings.Font.Style = [fsBold];
    LblWinner.SetclProSettings(LblWinner.clProSettings);
    
    PnlControls = MyForm.AddNewProPanel(PnlLeft, 'PnlControls');
    PnlControls.Align = alTop;
    PnlControls.Height = 60;
    
    BtnBaslat = MyForm.AddNewProButton(PnlControls, 'BtnBaslat', '🚦 YARIŞMAYI BAŞLAT');
    BtnBaslat.Align = alLeft;
    BtnBaslat.Width = 180;
    BtnBaslat.Height = 50;
    BtnBaslat.Margins.Right = 10;
    BtnBaslat.Enabled = False;
    BtnBaslat.clProSettings.BackgroundColor = clAlphaColor.clGreen;
    BtnBaslat.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnBaslat.clProSettings.RoundHeight = 10;
    BtnBaslat.clProSettings.RoundWidth = 10;
    BtnBaslat.SetclProSettings(BtnBaslat.clProSettings);
    MyForm.AddNewEvent(BtnBaslat, tbeOnClick, 'YarismayiBaslat');
    
    BtnKontrolEt = MyForm.AddNewProButton(PnlControls, 'BtnKontrolEt', '✅ CEVAPLARI KONTROL ET');
    BtnKontrolEt.Align = alLeft;
    BtnKontrolEt.Width = 180;
    BtnKontrolEt.Height = 50;
    BtnKontrolEt.Margins.Right = 10;
    BtnKontrolEt.Enabled = False;
    BtnKontrolEt.clProSettings.BackgroundColor = clAlphaColor.clBlue;
    BtnKontrolEt.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnKontrolEt.clProSettings.RoundHeight = 10;
    BtnKontrolEt.clProSettings.RoundWidth = 10;
    BtnKontrolEt.SetclProSettings(BtnKontrolEt.clProSettings);
    MyForm.AddNewEvent(BtnKontrolEt, tbeOnClick, 'CevapKontrolEt');
    
    BtnYonlendir = MyForm.AddNewProButton(PnlControls, 'BtnYonlendir', '🎮 YÖNLENDİR');
    BtnYonlendir.Align = alLeft;
    BtnYonlendir.Width = 150;
    BtnYonlendir.Height = 50;
    BtnYonlendir.Margins.Right = 10;
    BtnYonlendir.Enabled = False;
    BtnYonlendir.clProSettings.BackgroundColor = clAlphaColor.clPurple;
    BtnYonlendir.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnYonlendir.clProSettings.RoundHeight = 10;
    BtnYonlendir.clProSettings.RoundWidth = 10;
    BtnYonlendir.SetclProSettings(BtnYonlendir.clProSettings);
    MyForm.AddNewEvent(BtnYonlendir, tbeOnClick, 'Yonlendir');
    
    BtnSonrakiSoru = MyForm.AddNewProButton(PnlControls, 'BtnSonrakiSoru', '⏩ SONRAKİ SORU');
    BtnSonrakiSoru.Align = alLeft;
    BtnSonrakiSoru.Width = 150;
    BtnSonrakiSoru.Height = 50;
    BtnSonrakiSoru.Enabled = False;
    BtnSonrakiSoru.clProSettings.BackgroundColor = clAlphaColor.clOrange;
    BtnSonrakiSoru.clProSettings.FontColor = clAlphaColor.clWhite;
    BtnSonrakiSoru.clProSettings.RoundHeight = 10;
    BtnSonrakiSoru.clProSettings.RoundWidth = 10;
    BtnSonrakiSoru.SetclProSettings(BtnSonrakiSoru.clProSettings);
    MyForm.AddNewEvent(BtnSonrakiSoru, tbeOnClick, 'SonrakiSorunaGit');
    
    KirmiziHazir = False;
    MaviHazir = False;
    SoruAktif = False;
    KirmiziCevap = '';
    MaviCevap = '';
    
    MyForm.Run;
  }
}
https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" 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">
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Kutu İzle

Forum Software by Web Wiz Forums® version 12.07
Copyright ©2001-2024 Web Wiz Ltd.

Bu Sayfa 0,047 Saniyede Yüklendi.