Delphi for dongusundeki gariplik

Başlatan z, 18 Mayıs 2014, 16:29:18

t2

Belki pointer yanlış  kullanıldı.  Ondan oldu.
Bug dan değildir.
Z,  suçlu kesin sensin. 

engerex

 Delphi 6'dan 7'ye terfi edin derim. 150MB'lik modifiyeli Delphi 7 hafif taşınabilir sürüm mevcut. Kurmakla uğraşmazsınız. Kilitlenme sorunu olursa bir defaya mahsus ayarlardan bir seçeneği değiştirmek gerekebilir. Windows 8 ile çalışmayabilir.

z

Delphi 7 yi iş yerinde kurdum.  Dediğim gibi Delphi 6 da standart pakete hiç bir şey ilave etmeden daha önce yazdıgım programı Delphi7 de derleme aşamasında uses satırındaki bileşenlerden birisine ait dll eksikliği hatası alınca eve kurmakta acele etmiyorum.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

Değişken lokal olsa da bir pointer vasıtasıyla dışarıdan değiştirilmiş olabilir mi? ^işaretinin yanlış kullanımı?

z

Alıntı yapılan: z - 18 Mayıs 2014, 16:29:18
       for  a:=0 to 127
           begin
                Data=Buffer[a];
                ......
           end;



Kodum aynen böyle. a degişkenine hiç bir şekilde müdahale etmiyorum. Zaten for döngüsüne başlar başlamaz a, 0 ile değil 127 yada her neyse onunla başlıyor. Tek tek geriye sayıyor.
Bunu benim hatam olarak açıklamak çok zor. Pointer vs kullanmıyorum. Neyse ilk fırsatta örnek yayınlayacağım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

engerex

 Dediğine benzer standart bir bileşenin yazımı bir kaç sürümde farklı yazıma sahip. (DesignIntf, DesignEditors, DsgnIntf...) Böyle bir şey ekli mi? (Geçerli güncel yazım: DSIntf)

Yuunus

"Z" senin buffer'a gelen veride sorun olabilir mi yada Buffer in tipinde?

       for  a:=0 to 127 do begin
           Buffer[a]:=a;
                Data:=Buffer[a];
       end;

bu şekilde dener misin?

z

Yok hocam for dongusu  for a:=0 to 100 olarak yazdigim dongu calismaya basladiginda for a:=100 downto 0 tipinde calisiyor.

Kodlari adimlatirken a degiskenine bakiyorum sorunu burdan yakaliyorum zaten.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

#23
Sorunu görmek için, sıfır proje hazırlamak 1 dakika kadar sürecektir. Uzun bir süre olsa gerek. File > new> application..

    for  a:=0 to 127
           begin
                sayi=a
                ......
           end;


böyle yapıp tüm sayiları inttostr(sayi) ile memo içine veya metin dosyaya satır satır yazdırın. göreceksiniz  negatiften  başladığı yoktur.

Data veya Buffer belki yanlış tanımladınız ki bu soruna yol açtı

Alıntı yapılan: z - 07 Haziran 2014, 23:21:22
calismaya basladiginda for a:=100 downto 0 tipinde calisiyor.

Kodlari adimlatirken a degiskenine bakiyorum sorunu burdan yakaliyorum zaten.

Görüntüleme biçimini yanlış seçmişsinizdir. byte olan değişkeni  signed integer veya shortin olarak göstermeye çalışıyor olabilir. a değişkenini nasıl gözlemlediniz? ona da bir baksak hep beraber hak versek.

sıfır bir proje yapıp sorunu gösterseniz çok mu zor ? Muhtemelen o zaman  sorun çıkmayacak.


sadettinpolat

Yillardir delphi kullanirim boyle bir hataya rastlamadim.
Degisken tanimlarinizda bir problem olabilir.
Sifir basit bir ornek uygulama yazip buraya gonderebilirseniz bakariz. Bu sekilde yorum yapmak bosa kurek cekmek gibi.

engerex

Sıfır projede sorun belki hiç yaşanmaz. Projenizi kopyalayıp görmemizi istemediğin yerleri silip yollarsan daha uygun olur.

engerex

Alıntı yapılan: z - 18 Mayıs 2014, 16:29:18
       for  a:=0 to 127
           begin
                Data=Buffer[a];
                ......
           end;


Gibi donguleri debug ederken integer tanimlanmis a degiskeninin sirayla 128, 127 126, 125 degerlerini aldigini  goruyorum. Haliyle kodlarim yanlis calisiyor.

For dongusunde bu tersligin sebebi nedir?

Olay çözüldü mü?
Dögüdeki a değişkeni Integer mi ShortInt mi?

z

Sorun çözülmedi fakat for döngüsündeki değişkeni döngü içinde kullanmayarak işimi görüyorum.

Bu durumda for döngüsüne girmeden önce bir başka değişkeni sıfırlıyorum. Döngünün içinde de bunu artırıyorum. Döngü içindedeyken asıl döngü değişkeni yerine bu yardımcı değişkeni kullanıyorum.

Değişken olarak integer değişken kullanıyorum.

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

JOKERAS

func(const char *buffer) {
   int a;
   for(a = 0; a < 127; ++a) {
      Data = buffer[a];
   }
}
Eğer döngü fonksiyon içindeyse, fonksiyon parametresini "const" tanımlayıp denermisiniz?
Sanırım pointer, a değişkeninizi eziyor.
Delphiden anlamam.

engerex

Bugün bir hesap makinası kurcalıyordum. Veri tipi işaretli 8 bitti. 120 121 122 123 124 125 126 127 diye arttırırken -128,  -127 -126 -125 diye devam etti. Negatif olması dışında dizin tanımlamanıza uyuyordu. Delphini tepkisini merak edip uygulamaya çalıştığımda xe6 bu hatayı vermedi.