Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Yazılım Dillerinin Teknoloji Atakları
#11
(18-04-2019, Saat: 13:42)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
Alıntı:Diğer bi takıldığım yer. Codu yazdım çalıştırdım bir yerde hata var pat diye bir hata çıkıyor ekrana ama hatamın nerede olduğunu gösteren yada neyden hata verdiğini göstermeyen bir hata ekranı.

Bu tarz bir hataya örnek verebilir misiniz ? Ben Delphi'nin 1 versiyonundan beri Delphi ile çalışırım ve bahsettiğiniz gibi bir durumla karşılaştığımı hatırlamıyorum. Bir şeyleri eksik yapıyor olabilirsiniz, izah edebilirseniz neden bahsettiğinizi; yardımcı olmaya ya da sorunu anlayıp yorum yapmaya gayret edelim.

Hocam zaten ben Hata yaptığımı söylüyorum hata şöyle oluyor
Örnek vereyim.

SqlString := TStringBuilder.Create;
 SqlString.Append(' DECLARE @BASTARIH DATE = CONVERT(DATE,''' + dtIlkTarih.Text + ''',105)  DECLARE @BITTARIH DATE = CONVERT(DATE,''' + dtSonTarih.Text + ''',105)  DECLARE @SUBE VARCHAR(MAX) = ''0''   ');
 SqlString.Append(' DECLARE @SonAy INT = MONTH(@BITTARIH)  DECLARE @Sayac INT = @SonAy DECLARE @CL NVARCHAR(MAX) ');
 SqlString.Append(' IF OBJECT_ID(''tempdb..#ICMAL'') IS NOT NULL DROP TABLE #ICMAL; IF OBJECT_ID(''tempdb..#SUBE'') IS NOT NULL  DROP TABLE #SUBE;  ');
 SqlString.Append(' IF OBJECT_ID(''tempdb..##STOKLAR'') IS NOT NULL  DROP TABLE ##STOKLAR;    ');
 SqlString.Append(' CREATE TABLE #ICMAL(STOK_KODU VARCHAR(MAX),STOK_ADI VARCHAR(MAX),SATIS_FIYATI DECIMAL(28,8),ALIS_FIYATI DECIMAL(28,8) ');
 SqlString.Append(' ,BIRIM CHAR(5),KOLIICI INT,DEVREDEN DECIMAL(28,8),GIREN DECIMAL(28,8),CIKAN DECIMAL(28,8),KALAN DECIMAL(28,8)  ');
 SqlString.Append(' ,SUBE_BAKIYE DECIMAL(28,8),SATIS_MIKTARI DECIMAL(28,8),BEKLEYEN_SIP_MIKTARI DECIMAL(28,8), URUN_GRUBU VARCHAR(MAX)  ');
 SqlString.Append(' ,URETICI_KODU VARCHAR(MAX),KOD_1 VARCHAR(MAX),KOD_2 VARCHAR(MAX),KOD_3 VARCHAR(MAX) , KOD_4 VARCHAR(MAX),KOD_5 VARCHAR(MAX))  ');
 SqlString.Append(' INSERT INTO #ICMAL (STOK_KODU,STOK_ADI,URUN_GRUBU,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5)   ');
 SqlString.Append(' SELECT STOK_KODU,STOK_ADI,(SELECT DBO.TRK_CEVIR(GRUP_ISIM) FROM TBLSTOKKOD2 WITH (NOLOCK)  WHERE (GRUP_KOD = STS.KOD_2))    ');
 SqlString.Append(' ,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5 FROM dbo.TBLSTSABIT STS WITH (NOLOCK)  ' + GelenKisit + '   ');
 SqlString.Append(' SELECT SUBE_KODU INTO #SUBE FROM  dbo.TBLSUBELER  WITH (NOLOCK)  WHERE AKTIF =''E'' AND SUBE_KODU NOT IN (''0'',''100'',''101'',''102'',''103'',''104'',''105'',''106'',''107'',''302'',''401'',''402'',''403'',''99'',''32767'',''-1'')   ');
 SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = ISNULL ((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR  WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'')  ');
 SqlString.Append(' AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU   = #ICMAL.STOK_KODU)),0)   ');
 SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = DEVREDEN - ISNULL ((SELECT SUM (STHAR_GCMIK) FROM  TBLSTHAR  WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''C'') AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU   = #ICMAL.STOK_KODU)),0)  ');
 SqlString.Append(' UPDATE #ICMAL SET GIREN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'')   ');
 SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT(DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0)  ');
 SqlString.Append(' UPDATE #ICMAL SET CIKAN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR  WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE)  AND (STHAR_GCKOD = ''C'')  ');
 SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT (DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0)  ');
 SqlString.Append(' UPDATE #ICMAL SET KALAN = ISNULL(DEVREDEN + GIREN - CIKAN,0)  UPDATE #ICMAL SET SUBE_BAKIYE = ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR  WITH (NOLOCK)  WHERE   (STHAR_GCKOD = ''G'') AND  ');
 SqlString.Append(' (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0)   ');
 SqlString.Append(' UPDATE #ICMAL SET SUBE_BAKIYE = SUBE_BAKIYE - ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (STHAR_GCKOD = ''C'')  ');
 SqlString.Append(' AND (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0)    ');
 SqlString.Append(' UPDATE #ICMAL SET BIRIM = (SELECT OLCU_BR1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU)  UPDATE #ICMAL SET KOLIICI = (SELECT PAYDA_1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU)   ');
 SqlString.Append(' UPDATE #ICMAL SET ALIS_FIYATI = ISNULL((SELECT TOP (1)  FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK)  WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''A''   AND (BASTAR<=@BITTARIH)   AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH))    ORDER BY BASTAR DESC),0)   ');
 SqlString.Append(' UPDATE #ICMAL SET SATIS_FIYATI = ISNULL((SELECT TOP (1) FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK) WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''S''   AND (BASTAR<=@BITTARIH)   AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH))   ORDER BY BASTAR DESC),0)   ');
 SqlString.Append(' UPDATE #ICMAL SET BEKLEYEN_SIP_MIKTARI = ISNULL((SELECT KALAN_MIK FROM [dbo].[FN_BEKLEYEN_SIP] (#ICMAL.STOK_KODU ,@SUBE)),0)   ');
 SqlString.Append(' SELECT STOK_KODU,SUM(STHAR_GCMIK) AS MIKTAR ,MONTH(STHAR_TARIH) AS AY INTO ##STOKLAR FROM TBLSTHAR   WITH (NOLOCK) WHERE STHAR_GCKOD =''C'' AND STHAR_HTUR IN(''J'',''K'') AND STHAR_TARIH  ');
 SqlString.Append(' <= @BITTARIH AND SUBE_KODU BETWEEN 0 AND 800 GROUP BY STOK_KODU,MONTH(STHAR_TARIH) ');
 SqlString.Append(' DECLARE @cols   AS NVARCHAR(MAX) ,@query AS NVARCHAR(MAX);SELECT @cols = STUFF ((SELECT '','' + QUOTENAME (col + ''AY_'' + CAST(t.AY AS VARCHAR(20))) FROM ##STOKLAR t ');
 SqlString.Append(' CROSS APPLY (SELECT '''',MIKTAR) c(col, so) GROUP BY col,T.AY ORDER BY AY FOR XML PATH (''''), TYPE).value (''.'', ''NVARCHAR(MAX)''),1,1,'''' ); ');
 SqlString.Append(' SET @query = ''SELECT STOK_KODU,'' + @cols + '' INTO ##SATIS  from (SELECT STOK_KODU, col = col + ''''AY_'''' + cast(AY as varchar(4)),  value  from ##STOKLAR t   ');
 SqlString.Append(' cross apply(select '''''''', MIKTAR) c (col, value) ) x pivot (sum(value) for col in (''+ @cols + '') ) p ''; EXECUTE sp_executesql @query; ');
 SqlString.Append(' SELECT * INTO ##TUMSTOK FROM (SELECT ICM.STOK_ADI AS ADI,ICM.DEVREDEN,ICM.GIREN,ICM.CIKAN,ICM.KALAN,ICM.BIRIM,ICM.KOLIICI,ICM.STOK_ADI,ICM.KALAN+ICM.SUBE_BAKIYE AS TOP_BAKIYE, ');
 SqlString.Append(' ICM.SUBE_BAKIYE,ICM.SATIS_FIYATI,ICM.ALIS_FIYATI,ICM.BEKLEYEN_SIP_MIKTARI,ICM.URETICI_KODU,ICM.URUN_GRUBU,ICM.STOK_KODU AS STOK_KOD ');
 SqlString.Append(' ,ICM.KOD_1,ICM.KOD_2,ICM.KOD_3,ICM.KOD_4,ICM.KOD_5 ,AY.* FROM #ICMAL ICM LEFT JOIN ##SATIS AY ON AY.STOK_KODU = ICM.STOK_KODU ) AS TT  ');
 SqlString.Append(' WHILE (@Sayac>0) BEGIN  SET @CL = ''UPDATE ##TUMSTOK SET AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' = 0 WHERE AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' IS NULL'' ');
 SqlString.Append(' EXEC(@CL) SELECT @Sayac=@Sayac-1 END SELECT * FROM ##TUMSTOK ORDER BY STOK_ADI ');
 SqlString.Append(' DROP TABLE #ICMAL; DROP TABLE #SUBE; DROP TABLE ##SATIS;DROP TABLE ##STOKLAR;DROP TABLE ##TUMSTOK ');

 UniDataSource.Enabled := True;
 UniQuery.SQL.Text := SqlString.ToString;
 UniQuery.Execute;
 cxGrid1DBTableView1.EndUpdate;

Şimdi En yukarıdaki 
SqlString := TStringBuilder.Create; kodunu unuttum gib bir örnek vereyim şimdi aklıma gelmeyen çokk hata aldığım durum var
burada hatalı benim ondan yana sorun yok da hatamı göremiyorum
Bana verdiği hata ekranı şu 

7a588r.jpg

Şimdi ben bilmeyen bir kişi olarakdan bu hatadan 
SqlString := TStringBuilder.Create; etmediğimi nasıl anlarım ?
Anlamanın yolu varsa ben bilmiyorsam dediğiniz gibi doğrusunu söylerseniz çok sevinirim
Cevapla
#12
Öncelikle linç edilmeyeceğimi umarak yazıyorum ( Angel ) arkadaşların çoğu şirket sahibi ya da uzun zamandır iş ilanlarına bakmıyor sanırım. Diyeceksinizki o dilin çok kullanılması çok iyi olduğunu mu gösterir, cevabım en azından bir şeyler gösteriyor bence  Blush 

Ayrıca Delphi'nin Türkiye'de yaygınlığını diğer dünya ülkelerine göre çok sert kaybettiğini düşünüyorum ve burada Bt Grubu'nun da bir miktar payı var bence. Kim olduğunu, ne iş yaptığını, nasıl bir community oluşturduğunu, comminity denen şeye ne tür bir katkı yaptığını bilmediğimiz adamlar nasıl MVP oluyor bu bile buradaki yozlaşmanın/yolunda olmayan bir şeylerin göstergesi diye düşünüyorum. 

Umarım hiçbirimiz zorunlu bir şekilde iş aramak zorunda kalmayız ama kalırsak durum bu ne yazık ki  Rolleyes

Saygılar, 
Hürmetler  Blush

   

   
Cevapla
#13
(18-04-2019, Saat: 18:05)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Öncelikle linç edilmeyeceğimi umarak yazıyorum ( Angel ) arkadaşların çoğu şirket sahibi ya da uzun zamandır iş ilanlarına bakmıyor sanırım. Diyeceksinizki o dilin çok kullanılması çok iyi olduğunu mu gösterir, cevabım en azından bir şeyler gösteriyor bence  Blush 

Ayrıca Delphi'nin Türkiye'de yaygınlığını diğer dünya ülkelerine göre çok sert kaybettiğini düşünüyorum ve burada Bt Grubu'nun da bir miktar payı var bence. Kim olduğunu, ne iş yaptığını, nasıl bir community oluşturduğunu, comminity denen şeye ne tür bir katkı yaptığını bilmediğimiz adamlar nasıl MVP oluyor bu bile buradaki yozlaşmanın/yolunda olmayan bir şeylerin göstergesi diye düşünüyorum. 

Umarım hiçbirimiz zorunlu bir şekilde iş aramak zorunda kalmayız ama kalırsak durum bu ne yazık ki  Rolleyes

Saygılar, 
Hürmetler  Blush

Amaç kimseyi linç etmek değil, ihtiyaçlar doğrultusunda en doğru yolu bulmak. Bunu da burada konuşmayacak isek, bildiğimiz yanlış belkide bizim en doğrumuz olacaktır. 
Çok seslilik, ortak doğru yolu gösterecektir. 
Allah o listeye muhtaç etmesin. Smile Şahsen %90'ının adını bile ilk defa duydum. Duyduklarım da C# eksenli teknolojik yapılar. Türkiye'de yaşıyorsam yazılım harici bir iş aramak zorunda kalacağım. Yada bir torpil bulup o teknolojiyi bilenlerin başına yönetici olarak geleceğim. Smile
Yabancı ülkelerde (Avrupa ve Uzak Doğuda) durum nasıl bunların da istatistiğine bakmak lazım. 
Örneğin, dünya genelinde kabul gören popüler yazılım geliştirme ortam istatistiğini her ay yayınlayan Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.'de Delphi 15. sıralardadır.

   
 
Bu veya sizin referans olarak vermiş olduğunuz liste bir ölçü mü?
Bu konu daha önce hem bu formda hem de diğer formlarda defalarca konuşuldu sonuç olarak IN/OUT (arz/talep Smile ) parametre sayısı ve türü ön plana çıktı.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#14
Başlık fena dağılmış  Rolleyes

Devam edilecekse konunun ilgili kısımları "muhabbet"e taşınsın lütfen Smile
There's no place like 127.0.0.1
WWW
Cevapla
#15
(25-10-2016, Saat: 09:06)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Merhaba,
Embarcadero'nun Delphi Starter Edition sürümünü Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. dağıtması, Delphi/Object Pascal yazılımcılarının yüzünü güldürdü. Tahminimce bu açılımın sebebi Delphi'yi satın alma gücü olmayan veya test etmek isteyen geniş bir kitleye yayılmak ve ilerleyen süreçte Professional, Enterprise ve Architect sürümlerine Upgrade işlemlerine bu kullanıcılara indirim sağlamaktır.
Starter Edition'ın üst sürümlere geçiş için bir basamak olduğunu, aynı zamanda her iki taraf açısından da faydalı olduğunu düşünüyorum. Embarcadero müşteri kazanacak, biz de yeni üründe indirim almış olacağız.
Bu kapsamda olsa gerek; bir çoğunuzun da bildiği ve belki de bir çok projenizde vazgeçilmez Component listesinde yer alan TMS Software'de bir kampanya ile TMS Aurelius component setini ücretsiz olarak dağıtmaya başladı. (Ücretli ve tek yazılım geliştirci lisansı 195 Euro.)

TMS Aurelius nedir?
Kendilerinin tabiri ile ORM framework'tür. Yani Windows 32-Bit, Windows 64-Bit, macOS, iOS ve Android platformlarında çalışabilen bir bileşen kütüphanesidir. Bu set ile kompleks ve karmaşık veri tabanı sorgulamaları yapılabilmektedir.

Desteklediği veri tabanları:
  • Firebird
  • Interbase
  • Microsoft SQL Server
  • MySQL
  • NexusDB
  • Oracle
  • SQLite
  • PostgreSQL
  • DB2
  • ElevateDB server
  • Absolute Database

Desteklediği veri tabanı yönetim nesneleri:
  • dbExpress
  • dbGo (ADO)
  • FIBPlus
  • Interbase Express (IBX)
  • SQLite - Native Support
  • AnyDac
  • NexusDB
  • SQL-Direct
  • IBObjects
  • ElevateDB
  • UniDac
  • UIB
  • Direct Oracle Access
  • FireDac

Örnek bir Eğitim videosu:





Eğitim dokümanı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.


Peki ücretsiz ile ücretli sürümü arasında bir fark var mı?
Yoktur. Tüm özellikleri kullanılabiliyor. Tek fark ücretli versiyonda kaynak kodları da veriliyor.

Ticari amaçla kullanılabilir mi? Evet.


Tek dezavantajı yalnızca Delphi 10.1 Berlin sürümü için kullanılabiliyor. Alt sürümlere destek vermiyor. Ayrıca destek formunda müşteri olarak bir destek alamıyorsunuz. Destek için ücretli ürünlerinden birini almak gerekiyor.

Genel Özellikleri ile Ücretli*Ücretsiz sürüm farkları

tmsa1.png

Örnek kullanımına bakarak; daha önceden @kimimben üyemizin de benzer bir örnek verdiği, Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. (bu vesile ile kendisine tekrar teşekkür ederim.) ORM yapısının kodlamadaki avantajına bakalım.

Klasik kullanım örneği;

Query1.Sql.Text := 'SELECT I.ID AS INVOICE_ID, I.INVOICE_TYPE, I.INVOICE_NO, I.ISSUE_DATE, I.PRINT_DATE, ' +  
 'C.ID AS CUSTOMER_ID, C.CUSTOMER_NAME, C.SEX, C.BIRTHDAY, N.ID AS COUNTRY_ID, N.COUNTRY_NAME' +  
 'FROM INVOICE AS I INNER JOIN CUSTOMER AS C ON (C.ID = I.CUSTOMER_ID) ' +  
 'LEFT JOIN COUNTRY AS N ON (N.ID = C.COUNTRY_ID)' +  
 'WHERE I.ID = :INVOICE_ID;'  
Query1.ParamByName('INVOICE_ID').AsInteger := 1;  
Query1.Open;  
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',  
 [Query1.FieldByName('INVOICE_NO').AsInteger,  
  Query1.FieldByName('CUSTOMER_NAME').AsString,  
  Query1.FieldByName('COUNTRY_NAME').AsString]));   

TMS Aurelius ile aynı örnek;

Invoice := Manager1.Find<TInvoice>(1);  
ShowMessage(Format('Invoice No: %d, Customer: %s, Country: %s',  
 [Invoice.InvoiceNo, Invoice.Customer.Name, Invoice.Customer.Country.Name]));  

Kayıt ve Ücretsiz İndirmek için: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

Hayırlı olsun

Not:  30 Kasım 2016 tarihine kadar ücretsiz indirilebilir.

Bu güzel anlatım ve örnekler için çok teşekkürler Fesih Bey
Cevapla
#16
(18-04-2019, Saat: 15:14)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(18-04-2019, Saat: 14:29)sddk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız..Net Core tarafından üretilen çıktılar Java'nın jar/war'ı gibi platform bağımsız çıktılardır, native çıktılar gibi doğrudan işletim sistemi üzerinde çalışmazlar, bir sanal makine (Java için JVM, .Net için .Net Framework veya .Net Core) üzerinde çalışırlar. Dolayısı ile bir Linux kernel'inin .Net Core çıktısını doğrudan çalıştırması (kabullenmesi) zaten beklenmez.

Kısacası native yerine (kim uğraşacak native'le) farklı bir teknikle (ara yazılımla), kendi framework'lerine bağımlı, çalıştıracağı uygulamanın haricinde bellekte önemli ölçüde yer kaplayan, ek bir tercüman (interpreter) ihtiyacı ile normale göre daha yavaş çalışan bir mimariden bahsediyoruz. JVM'yi tenzih ediyorum.

Tenzih ettiğiniz ile yerdiğiniz teknolojilerin mimarileri aynı!
Cevapla
#17
(19-04-2019, Saat: 11:30)sddk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(18-04-2019, Saat: 15:14)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Kısacası native yerine (kim uğraşacak native'le) farklı bir teknikle (ara yazılımla), kendi framework'lerine bağımlı, çalıştıracağı uygulamanın haricinde bellekte önemli ölçüde yer kaplayan, ek bir tercüman (interpreter) ihtiyacı ile normale göre daha yavaş çalışan bir mimariden bahsediyoruz. JVM'yi tenzih ediyorum.

Tenzih ettiğiniz ile yerdiğiniz teknolojilerin mimarileri aynı!

Yalnızca yorumlayıcı katmanı için haklısınız. Microsoft'un o katmanda kodu ne şekilde yorumladığı da son derece önemlidir.
JVM mimarisini taklit yeteneğini kullanarak, yeniden icat etmiş ve Core olarak duyurmuş o halde.  Big Grin
Tenzih ettiğim kısım; 
JVM, yalnızca pc ve mobil de değil tüm kişisel cihazlarda kendisini ispatlamış son derece güçlü ve stabil JDK kütüphanesi ve JRE geliştirme ortamını kullanır.  
Malum dilin hangi framework'ü stabil; Windows'un son sürümünde bile halen her uygulama için farklı bir framework'e ihtiyaç duyuyor.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#18
(18-04-2019, Saat: 17:02)FiRewaLL Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(18-04-2019, Saat: 13:42)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Bu tarz bir hataya örnek verebilir misiniz ? Ben Delphi'nin 1 versiyonundan beri Delphi ile çalışırım ve bahsettiğiniz gibi bir durumla karşılaştığımı hatırlamıyorum. Bir şeyleri eksik yapıyor olabilirsiniz, izah edebilirseniz neden bahsettiğinizi; yardımcı olmaya ya da sorunu anlayıp yorum yapmaya gayret edelim.

Hocam zaten ben Hata yaptığımı söylüyorum hata şöyle oluyor
Örnek vereyim.

SqlString := TStringBuilder.Create;
 SqlString.Append(' DECLARE @BASTARIH DATE = CONVERT(DATE,''' + dtIlkTarih.Text + ''',105)  DECLARE @BITTARIH DATE = CONVERT(DATE,''' + dtSonTarih.Text + ''',105)  DECLARE @SUBE VARCHAR(MAX) = ''0''   ');
 SqlString.Append(' DECLARE @SonAy INT = MONTH(@BITTARIH)  DECLARE @Sayac INT = @SonAy DECLARE @CL NVARCHAR(MAX) ');
 SqlString.Append(' IF OBJECT_ID(''tempdb..#ICMAL'') IS NOT NULL DROP TABLE #ICMAL; IF OBJECT_ID(''tempdb..#SUBE'') IS NOT NULL  DROP TABLE #SUBE;  ');
 SqlString.Append(' IF OBJECT_ID(''tempdb..##STOKLAR'') IS NOT NULL  DROP TABLE ##STOKLAR;    ');
 SqlString.Append(' CREATE TABLE #ICMAL(STOK_KODU VARCHAR(MAX),STOK_ADI VARCHAR(MAX),SATIS_FIYATI DECIMAL(28,8),ALIS_FIYATI DECIMAL(28,8) ');
 SqlString.Append(' ,BIRIM CHAR(5),KOLIICI INT,DEVREDEN DECIMAL(28,8),GIREN DECIMAL(28,8),CIKAN DECIMAL(28,8),KALAN DECIMAL(28,8)  ');
 SqlString.Append(' ,SUBE_BAKIYE DECIMAL(28,8),SATIS_MIKTARI DECIMAL(28,8),BEKLEYEN_SIP_MIKTARI DECIMAL(28,8), URUN_GRUBU VARCHAR(MAX)  ');
 SqlString.Append(' ,URETICI_KODU VARCHAR(MAX),KOD_1 VARCHAR(MAX),KOD_2 VARCHAR(MAX),KOD_3 VARCHAR(MAX) , KOD_4 VARCHAR(MAX),KOD_5 VARCHAR(MAX))  ');
 SqlString.Append(' INSERT INTO #ICMAL (STOK_KODU,STOK_ADI,URUN_GRUBU,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5)   ');
 SqlString.Append(' SELECT STOK_KODU,STOK_ADI,(SELECT DBO.TRK_CEVIR(GRUP_ISIM) FROM TBLSTOKKOD2 WITH (NOLOCK)  WHERE (GRUP_KOD = STS.KOD_2))    ');
 SqlString.Append(' ,URETICI_KODU,KOD_1,KOD_2,KOD_3,KOD_4,KOD_5 FROM dbo.TBLSTSABIT STS WITH (NOLOCK)  ' + GelenKisit + '   ');
 SqlString.Append(' SELECT SUBE_KODU INTO #SUBE FROM  dbo.TBLSUBELER  WITH (NOLOCK)  WHERE AKTIF =''E'' AND SUBE_KODU NOT IN (''0'',''100'',''101'',''102'',''103'',''104'',''105'',''106'',''107'',''302'',''401'',''402'',''403'',''99'',''32767'',''-1'')   ');
 SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = ISNULL ((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR  WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'')  ');
 SqlString.Append(' AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU   = #ICMAL.STOK_KODU)),0)   ');
 SqlString.Append(' UPDATE #ICMAL SET DEVREDEN = DEVREDEN - ISNULL ((SELECT SUM (STHAR_GCMIK) FROM  TBLSTHAR  WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''C'') AND (STHAR_TARIH < CONVERT (DATE, @BASTARIH, 105)) AND (STOK_KODU   = #ICMAL.STOK_KODU)),0)  ');
 SqlString.Append(' UPDATE #ICMAL SET GIREN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE) AND (STHAR_GCKOD = ''G'')   ');
 SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT(DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0)  ');
 SqlString.Append(' UPDATE #ICMAL SET CIKAN = ISNULL((SELECT SUM (STHAR_GCMIK) FROM TBLSTHAR  WITH (NOLOCK) WHERE (SUBE_KODU = @SUBE)  AND (STHAR_GCKOD = ''C'')  ');
 SqlString.Append(' AND (STHAR_TARIH BETWEEN CONVERT (DATE, @BASTARIH, 105) AND CONVERT (DATE, @BITTARIH, 105)) AND (STOK_KODU = #ICMAL.STOK_KODU)),0)  ');
 SqlString.Append(' UPDATE #ICMAL SET KALAN = ISNULL(DEVREDEN + GIREN - CIKAN,0)  UPDATE #ICMAL SET SUBE_BAKIYE = ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR  WITH (NOLOCK)  WHERE   (STHAR_GCKOD = ''G'') AND  ');
 SqlString.Append(' (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0)   ');
 SqlString.Append(' UPDATE #ICMAL SET SUBE_BAKIYE = SUBE_BAKIYE - ISNULL((SELECT SUM(STHAR_GCMIK) FROM TBLSTHAR WITH (NOLOCK) WHERE (STHAR_GCKOD = ''C'')  ');
 SqlString.Append(' AND (STHAR_TARIH <= @BITTARIH) AND (STOK_KODU = #ICMAL.STOK_KODU) AND (SUBE_KODU IN (SELECT SUBE_KODU FROM #SUBE))), 0)    ');
 SqlString.Append(' UPDATE #ICMAL SET BIRIM = (SELECT OLCU_BR1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU)  UPDATE #ICMAL SET KOLIICI = (SELECT PAYDA_1 FROM dbo.TBLSTSABIT WHERE STOK_KODU=#ICMAL.STOK_KODU)   ');
 SqlString.Append(' UPDATE #ICMAL SET ALIS_FIYATI = ISNULL((SELECT TOP (1)  FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK)  WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''A''   AND (BASTAR<=@BITTARIH)   AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH))    ORDER BY BASTAR DESC),0)   ');
 SqlString.Append(' UPDATE #ICMAL SET SATIS_FIYATI = ISNULL((SELECT TOP (1) FIYAT1 FROM TBLSTOKFIAT WITH (NOLOCK) WHERE STOKKODU = #ICMAL.STOK_KODU AND A_S = ''S''   AND (BASTAR<=@BITTARIH)   AND ((BITTAR IS NULL) OR (BITTAR >= @BITTARIH))   ORDER BY BASTAR DESC),0)   ');
 SqlString.Append(' UPDATE #ICMAL SET BEKLEYEN_SIP_MIKTARI = ISNULL((SELECT KALAN_MIK FROM [dbo].[FN_BEKLEYEN_SIP] (#ICMAL.STOK_KODU ,@SUBE)),0)   ');
 SqlString.Append(' SELECT STOK_KODU,SUM(STHAR_GCMIK) AS MIKTAR ,MONTH(STHAR_TARIH) AS AY INTO ##STOKLAR FROM TBLSTHAR   WITH (NOLOCK) WHERE STHAR_GCKOD =''C'' AND STHAR_HTUR IN(''J'',''K'') AND STHAR_TARIH  ');
 SqlString.Append(' <= @BITTARIH AND SUBE_KODU BETWEEN 0 AND 800 GROUP BY STOK_KODU,MONTH(STHAR_TARIH) ');
 SqlString.Append(' DECLARE @cols   AS NVARCHAR(MAX) ,@query AS NVARCHAR(MAX);SELECT @cols = STUFF ((SELECT '','' + QUOTENAME (col + ''AY_'' + CAST(t.AY AS VARCHAR(20))) FROM ##STOKLAR t ');
 SqlString.Append(' CROSS APPLY (SELECT '''',MIKTAR) c(col, so) GROUP BY col,T.AY ORDER BY AY FOR XML PATH (''''), TYPE).value (''.'', ''NVARCHAR(MAX)''),1,1,'''' ); ');
 SqlString.Append(' SET @query = ''SELECT STOK_KODU,'' + @cols + '' INTO ##SATIS  from (SELECT STOK_KODU, col = col + ''''AY_'''' + cast(AY as varchar(4)),  value  from ##STOKLAR t   ');
 SqlString.Append(' cross apply(select '''''''', MIKTAR) c (col, value) ) x pivot (sum(value) for col in (''+ @cols + '') ) p ''; EXECUTE sp_executesql @query; ');
 SqlString.Append(' SELECT * INTO ##TUMSTOK FROM (SELECT ICM.STOK_ADI AS ADI,ICM.DEVREDEN,ICM.GIREN,ICM.CIKAN,ICM.KALAN,ICM.BIRIM,ICM.KOLIICI,ICM.STOK_ADI,ICM.KALAN+ICM.SUBE_BAKIYE AS TOP_BAKIYE, ');
 SqlString.Append(' ICM.SUBE_BAKIYE,ICM.SATIS_FIYATI,ICM.ALIS_FIYATI,ICM.BEKLEYEN_SIP_MIKTARI,ICM.URETICI_KODU,ICM.URUN_GRUBU,ICM.STOK_KODU AS STOK_KOD ');
 SqlString.Append(' ,ICM.KOD_1,ICM.KOD_2,ICM.KOD_3,ICM.KOD_4,ICM.KOD_5 ,AY.* FROM #ICMAL ICM LEFT JOIN ##SATIS AY ON AY.STOK_KODU = ICM.STOK_KODU ) AS TT  ');
 SqlString.Append(' WHILE (@Sayac>0) BEGIN  SET @CL = ''UPDATE ##TUMSTOK SET AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' = 0 WHERE AY_''+CONVERT(NVARCHAR(3),@Sayac) +'' IS NULL'' ');
 SqlString.Append(' EXEC(@CL) SELECT @Sayac=@Sayac-1 END SELECT * FROM ##TUMSTOK ORDER BY STOK_ADI ');
 SqlString.Append(' DROP TABLE #ICMAL; DROP TABLE #SUBE; DROP TABLE ##SATIS;DROP TABLE ##STOKLAR;DROP TABLE ##TUMSTOK ');

 UniDataSource.Enabled := True;
 UniQuery.SQL.Text := SqlString.ToString;
 UniQuery.Execute;
 cxGrid1DBTableView1.EndUpdate;

Şimdi En yukarıdaki 
SqlString := TStringBuilder.Create; kodunu unuttum gib bir örnek vereyim şimdi aklıma gelmeyen çokk hata aldığım durum var
burada hatalı benim ondan yana sorun yok da hatamı göremiyorum
Bana verdiği hata ekranı şu 

7a588r.jpg

Şimdi ben bilmeyen bir kişi olarakdan bu hatadan 
SqlString := TStringBuilder.Create; etmediğimi nasıl anlarım ?
Anlamanın yolu varsa ben bilmiyorsam dediğiniz gibi doğrusunu söylerseniz çok sevinirim

Sevgili kardeşim; uygulamayı bir debugger ile çalıştırırsanız (Bizim için Delphi IDE en güzeli) bu durumda çıkan hata mesajında Break demenize müteakip hatanın oluştuğu yere düşersiniz. Ardından Call Stack'a bakar iseniz, kodun seceresini gözlemler ve böceğinizi bulursunuz. Sonrası size ait. Elbette çalışma zamanında size hata ile ilgili çok anlamlı bir mesaj çıkartılamayacaktır. (Her ne kadar AV hatasında elde edilen adresin'de bir anlamı varsa da). Runtime sırasında da detaylı hata analizleri , kod satırının tespiti vb şeyleri istiyor iseniz bu durumda uygulamanızın ayarlarında Map Info'yu detailed yapmalısınız ya da daha da iyisi EurekaLog, madExcept ya da ona benzer ürünleri kullanmalısınız. Ben psikopatım kendi call stack'ımı kendim oluştururum derseniz sizi zorlu bir yol bekliyor demektir. Ama yine de psikopat adayları için Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. API'sine bakmalarını önerebilirim.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#19
(19-04-2019, Saat: 13:46)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.Sevgili kardeşim; uygulamayı bir debugger ile çalıştırırsanız (Bizim için Delphi IDE en güzeli) bu durumda çıkan hata mesajında Break demenize müteakip hatanın oluştuğu yere düşersiniz. Ardından Call Stack'a bakar iseniz, kodun seceresini gözlemler ve böceğinizi bulursunuz. Sonrası size ait. Elbette çalışma zamanında size hata ile ilgili çok anlamlı bir mesaj çıkartılamayacaktır. (Her ne kadar AV hatasında elde edilen adresin'de bir anlamı varsa da). Runtime sırasında da detaylı hata analizleri , kod satırının tespiti vb şeyleri istiyor iseniz bu durumda uygulamanızın ayarlarında Map Info'yu detailed yapmalısınız ya da daha da iyisi EurekaLog, madExcept ya da ona benzer ürünleri kullanmalısınız. Ben psikopatım kendi call stack'ımı kendim oluştururum derseniz sizi zorlu bir yol bekliyor demektir. Ama yine de psikopat adayları için Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız. API'sine bakmalarını önerebilirim.

Hocam uygulamayı bir debugger ile çalıştırırsanız (Bizim için Delphi IDE en güzeli)
Debug Mode de çalıştırdığımda break dediğimiz zaman hataya değil hatanın hatasının hatasının olduğu detaylara düşüyor oradan da hiç birşey anlamıyorsun Smile
Teşekkür ederim ilgin için.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  1965-2019 arası programlama dillerinin popülerliği csunguray 6 150 Dün, Saat: 15:40
Son Yorum: csunguray
  LGS,Meslek Lisesi,MTOK,Teknoloji Fakültesi,5 yıllık eğitim 41linea41 11 691 16-06-2019, Saat: 18:41
Son Yorum: 41linea41
  Microsoft Türkiye'de açık kaynak yazılım şirketi citusdata'yı alıyor. pro_imaj 8 873 09-02-2019, Saat: 09:19
Son Yorum: Abdullah ILGAZ
  Özel Yazılım Sözleşmesi Hk. pro_imaj 15 3.185 01-02-2019, Saat: 09:37
Son Yorum: Bay_Y
  Açık kaynak yazılım yazacak olsanız ne yazarsınız ? boreas 21 2.549 03-11-2018, Saat: 14:22
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi