Clomosy | Forum Ana Sayfa
Forum Anasayfa Forum Anasayfa > Genel Programlama > Genel İşlemler
  Aktif Konular Aktif Konular RSS - Sürekli Devam Eden Runtime 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.

Sürekli Devam Eden Runtime Hatası

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

Kayıt Tarihi: 25 Haziran 2024
Konum: Konya
Durum: Aktif Değil
Puanlar: 4
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı Enes_Akyüz Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: Sürekli Devam Eden Runtime Hatası
    Gönderim Zamanı: 25 Haziran 2024 Saat 15:08
var
MyForm: TCLForm;
CompassImg,DirectionImg: TClProImage;
GetTimer: TClTimer;
CompassXLabel,CompassYLabel,CompassZLabel : TclLabel;

void GetCompass;
var
currentYHeading,currentXHeading,currentZHeading: Double;
rotationAngle: Double;
{
if (not MyForm.FormOrientationSensor.Sensor == nil)
{
currentYHeading = MyForm.FormOrientationSensor.Sensor.HeadingY;
currentXHeading = MyForm.FormOrientationSensor.Sensor.HeadingX;
currentZHeading = MyForm.FormOrientationSensor.Sensor.HeadingZ;

CompassXLabel.Text = 'X : '+FloatToStr(Abs(currentXHeading));
CompassYLabel.Text = 'Y : '+FloatToStr(Abs(currentYHeading));
CompassZLabel.Text = 'Z : '+FloatToStr(Abs(currentZHeading));

}

CompassImg.RotationAngle = currentYHeading;

}

{
MyForm = TCLForm.Create(Self);

MyForm.SetFormBGImage('https://clomosy.com/demos/compassbg.png');
CompassXLabel = MyForm.AddNewLabel(MyForm,'CompassXLabel','--');
CompassXLabel.Align = alBottom;
CompassXLabel.Margins.Bottom= 30; 
CompassXLabel.Height = 50;
CompassXLabel.Width = 150;

CompassYLabel = MyForm.AddNewLabel(MyForm,'CompassYLabel','--');
CompassYLabel.Align = alBottom;
CompassYLabel.Margins.Bottom= 20; 
CompassYLabel.Height = 50;
CompassYLabel.Width = 150;

CompassZLabel = MyForm.AddNewLabel(MyForm,'CompassZLabel','--');
CompassZLabel.Align = alBottom;
CompassZLabel.Margins.Bottom= 10; 
CompassZLabel.Height = 50;
CompassZLabel.Width = 150;

CompassImg = MyForm.AddNewProImage(MyForm,'CompassImg');
clComponent.SetupComponent(CompassImg,'{"Align" : "Center","Width":350,"Height":350,"ImgUrl":"https://clomosy.com/demos/compass2.png", "ImgFit":"yes"}');

DirectionImg = MyForm.AddNewProImage(MyForm,'DirectionImg');
clComponent.SetupComponent(DirectionImg,'{"Align" : "Center","Width":350,"Height":350,"ImgUrl":"https://clomosy.com/demos/compass_arrow2.png", "ImgFit":"yes","MarginBottom":100,"MarginRight":28}');

MyForm.FormOrientationSensorType = ostHeading;
MyForm.FormOrientationSensor.Active = True;

GetTimer = MyForm.AddNewTimer(MyForm, 'GetTimer', 500);
GetTimer.Enabled = True;
MyForm.AddNewEvent(GetTimer, tbeOnTimer, 'GetCompass');
 
MyForm.Run;
}
Bilgisayar üzerinden, Clomosylearn uygulaması ile açıldığında sürekli RUNTİME hatası alıyorum.
Kodlarım yukarıda belirttiğim gibi. Hata kodu aşağıda yer alıyor.
Yukarı Dön
BilalCndn Açılır Kutu İzle
Forum Yöneticisi
Forum Yöneticisi
Simge

Kayıt Tarihi: 09 Ekim 2023
Durum: Aktif Değil
Puanlar: 150
Mesaj Seçenekleri Mesaj Seçenekleri   Teşekkürler (0) Teşekkürler(0)   Alıntı BilalCndn Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Gönderim Zamanı: 25 Haziran 2024 Saat 16:12
Merhaba Enes,

FormOrientationSensor mobil cihazlarda var olan bir sensör. Windows bilgisayarlarda bulunmadığı için çalışmıyor. Koda baktığımız zaman timer a bağlı void içerisinde if ile Orientation Sensorden veri gelip gelmediği kontrol ederek verileri değişkene alıp aynı zamanda label içerisine yazmışsın. Burada bir sıkıntı yok çünkü sensörden veri gelmiyorsa if içerisine girmiyor. Fakat if dışında 'CompassImg.RotationAngle = currentYHeading;' satırı var. Bu satırda alamadığımız Y değerini kullanarak Image nesnesinin RotationAngle değerini değiştirmeye çalışıyoruz. Değer olmadığı için de hata alıyoruz. Hatanın sürekli devam etmesinin sebebi de timer içerisinde tekrar tekrar aynı kodun çalışmasından kaynaklanıyor. Çözüm için bu satırı if içerisine alabilirsin. Bu sayede eğer ki sensörden veri alamazsa bile hata vermez.

void GetCompass;
var
  currentYHeading,currentXHeading,currentZHeading: Double;
  rotationAngle: Double;
{
  if (not MyForm.FormOrientationSensor.Sensor == nil)
  {
  currentYHeading = MyForm.FormOrientationSensor.Sensor.HeadingY;
  currentXHeading = MyForm.FormOrientationSensor.Sensor.HeadingX;
  currentZHeading = MyForm.FormOrientationSensor.Sensor.HeadingZ;
  
  CompassXLabel.Text = 'X : '+FloatToStr(Abs(currentXHeading));
  CompassYLabel.Text = 'Y : '+FloatToStr(Abs(currentYHeading));
  CompassZLabel.Text = 'Z : '+FloatToStr(Abs(currentZHeading));
  
  CompassImg.RotationAngle = currentYHeading;
  }
}

Sorunun çözüme ulaşıp ulaşmadığı ile ilgili geri dönüşünü bekliyorum.
İyi çalışmalar diliyorum.
Bilal Candan

Atiker Yazılım Veri İşlem A.Ş.
Software Developer

[email protected]
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,078 Saniyede Yüklendi.