C# Sorularım
1 1

Bu konuda 42 mesaj var

Selam arkadaşlar, eğer bir tartışma ortamı oluşursa buradan bu dil ile ilgili aklıma takılan soruları sormayı düşünüyorum  :)

 

Soruya gelecek olursak şöyle tren gibi uzayan bir kod satırım var: 

Console.WriteLine("KAL={0}\t{8}\nKB={1}\t{9}\nKL={2}\t{10}\nGB={3}\t{11}\nGL={4}\t{12}\nGD={5}\t{13}\nGX={6}\t{14}\nGY={7}\t{15}", KAL, KB, KL, GB, GL, GD, GX, GY, AC1, AC2, AC3, AC4, AC5, AC6, AC7, AC8);

ekrana sığmadığı zaman bu kodu VB de _ yöntemi ile şöyle yazabiliyordum: (tabi & kullanmakta lazım örnek olarak söylüyorum)

Console.WriteLine("KAL={0}\t{8}\nKB={1}\t{9}\nKL={2}\t{10}\nGB={3}\t{11}\nGL={4}\t{12} _
\nGD={5}\t{13}\nGX={6}\t{14}\nGY={7}\t{15}", _
KAL, KB, KL, GB, GL, GD, GX, GY, _
AC1, AC2, AC3, AC4, AC5, AC6, AC7, AC8);

bunu C#'da nasıl yapabilirim. EDIT>ADVANCED>WORD WRAP diye bir özellik var ama aradığım bu değil.

 

Teşekkürler,

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

String ifade ise:

 

string myText = "Looking up into the night sky is looking into infinity" +
" - distance is incomprehensible and therefore meaningless.";

 

veya

 

string myText = @"Looking up into the night sky is looking into infinity
- distance is incomprehensible and therefore meaningless."
;

 

Şeklinde yapılıyormuş.

 

Sizin örnekte böyle çalışır mı denemek lazım.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

" +" operatörü ile parçalayabilirsiniz. Bu tip kısa, tek satırlık stringi birleştirmede sorun olmaz.

 

Bir diğer çözüm string' in başına @ koyabilirsiniz, sonrasında istediğiniz yerden enter ile bölün, yalnız o enter ve sonraki satırda gelen boşluklar stringe dahil oluyor. Bu yüzden tercih etmeyebilirsiniz. Fakat "\n" yerine enter koyup sonraki satırlarda başlarında boşluk olmaz ise olur.

 

Parametreler için özel bir şey yapmanıza gerek yok direk bölebilirsiniz.

Hayalet beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Çok sağ olun arkadaşlar böyle çalıştı :

Console.WriteLine("KAL={0}\t{8}\nKB={1}\t{9}\nKL={2}\t{10}\nGB={3}\t{11}\nGL={4}"+
"\t{12}\nGD={5}\t{13}\nGX={6}\t{14}\nGY={7}\t{15}", 
KAL, KB, KL, GB, GL, GD, GX, GY, 
AC1, AC2, AC3, AC4, AC5, AC6, AC7, AC8);

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Merhaba Tekrar,

 

ACAD isimli bir obje tanımladım : 

Autodesk.AutoCAD.Interop.AcadApplication ACAD = new Autodesk.AutoCAD.Interop.AcadApplication();

Sonra bu objeyi aşağıdaki metoda göndermek istiyorum ; 

psADH_Netload(ACAD, AppDomain.CurrentDomain.BaseDirectory + "AdhAcadLib.dll");

Ama şu hatayı alıyorum ACAD objesini algılayamadı ,çok basit bir hata ama vb.net te çalışan yöntem burada niye çalışmadı anlayamadım ...

OleMessageFilter.Register();
          
            try
            {
                string path = AppDomain.CurrentDomain.BaseDirectory;
                path = path + "şablon.dwt";

                Autodesk.AutoCAD.Interop.AcadApplication ACAD = new Autodesk.AutoCAD.Interop.AcadApplication();
                ACAD.Visible = true;
                //ACAD.Application.WindowState = 
                ACAD.ActiveDocument.Close();
                ACAD.Application.Documents.Add(path);
            }
            catch (Exception ex)
            {                
                Console.WriteLine(ex.Message);
            }

            OleMessageFilter.Revoke();

            // Netload AdhAcadLib.dll
            psADH_Netload(ACAD, AppDomain.CurrentDomain.BaseDirectory + "AdhAcadLib.dll");
"Error 3 The name 'ACAD' does not exist in the current context "
 
 
içine göndermek istediğim metod da böyle birşey : 
 
        public static void psADH_Netload(Autodesk.AutoCAD.Interop.AcadApplication ACAD, string path)
        {
            AcadDocument doc = ACAD.ActiveDocument;

            try
            {
                doc.SendCommand("SETVAR\rFILEDIA\r0\r");
                doc.SendCommand("NETLOAD\r" + path + "\r");
                doc.SendCommand("SETVAR\rFILEDIA\r1\r");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

try' ın içinde ACAD' ı tanıttığınız için try bitince ACAD tanımı da bitiyor.

 

ya psADH_Netload(ACAD, AppDomain.CurrentDomain.BaseDirectory + "AdhAcadLib.dll");

 

komutunu da try' ın içine almanız gerekiyor ya da ACAD tanımını şöyle yapmanız gerekiyor:

 

 

ya try' ın üstüne

Autodesk.AutoCAD.Interop.AcadApplication ACAD = new Autodesk.AutoCAD.Interop.AcadApplication();

 

ya da gene try' ın üstüne:

Autodesk.AutoCAD.Interop.AcadApplication ACAD;

 

try' ın içine

ACAD = new Autodesk.AutoCAD.Interop.AcadApplication();

Hayalet beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

İlk programımı yaptım sayılır bende C# ile konsoldan başladım önemli olan çalışması bizim mühendislik işlerinde görsellik falan hiç önemli değil.

 

Yanlız şuanda doğrumu yaptım bilmiyorum notepad++ da bayağı bir notlar aldım takildıkça gidip oraya bakıyorum doğru mu yapıyorum bilemiyorum.

Yani bir anlamda o notlara bağımlı kalıyorum kopya çekerr gibi.

Bu class yapısı aslında çok güclü ama ben çok iyi kullanamıyurum birde hatalar çok kötü organize edilmiş mesajlardan nerede hata olduğunu anlayamıyorum.

Editörde çok gelişmiş değil. Şimdilik nemnun kaldım C# dan genel olarak ama

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Selam Arkadaşlar, bu C# 'da var olan Stream objesi nedir ne değildir tam vâkıf olamadım Basitçe izah edecek birisi var mı ? 

Hatta şurada da kullandım bilmeyerek : 

using System.Text;
using System.IO;

private void btn_Open_Click(object sender, EventArgs e)
        {         
            OpenFileDialog OFD = new OpenFileDialog();
            OFD.Filter = "Text Dosyaları (.txt)|*.txt|Data Dosyaları (.dat)|*.dat|Tüm Dosyalar (*.*)|*.*";
            OFD.FilterIndex = 1;

            Stream S;

            if (OFD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                if(  (S=OFD.OpenFile())  !=  null  )                
                {
                    string fileName = OFD.FileName;
                    string fileText = File.ReadAllText(fileName);
                    richTextBox1.Text = fileText;                    
                }                
            }
        }

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

"Stream" abstract bir sınıf. Byte serisi tutmak için kullanılır, bazı kolaylıklar sağlayan ek fonksiyonları vs... var, byte[]' dan hallice. Verdiğiniz örnekte ihtiyacınız yok aslında (S=OFD.OpenFile() gereksiz gibi), ReadAllText dosyayı bulamazsa uygun hatayı dönderir. Stream kullanırsanız da using ile kullanmak gerekiyor.

 

https://msdn.microsoft.com/en-us/library/system.io.stream%28v=vs.110%29.aspx

Hayalet beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Evet gereksiz, ben denemek icin koydum nasil calistigini anlamak icin. Streamsiz yazmistim kodu ilk basta belki bir ozelligini ilerde kullanirim diye eklemistim.

 

Edit.. gencler C# acayip alistim kafa plarak VB gormek istemiyorum bu arada D

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

agirlikli vb6, fortran bizdeki kodlar D
edit birde ben programci degilim aslinda uzmanlik olarak, hicbirsey bilmiyorum desem yeridir cidden ama ortaya bayagi birseyler cikiyor iste sistem sagolsun.

hm linki okudugum zaman anliyorum text yaratmak edit etmek icin bu sinif galiba vbde open as #1 seklinde yapiyorduk bunlari sasirmanizi simdi daha iyi anliyorum hic kullanmamisim vb.nette gercekten

 

en çok kullanacağım şeymiş bu iyiki sormuşum :)

            string path = @"C:\deneme.txt";
            StreamWriter SW = new StreamWriter(path);
            SW.Write("Birinci satır.\r\n");            
            SW.Write("İkinci satır.\r\n");
            SW.Close();

            StreamReader SR = new StreamReader(path);          
            do
            {
                string txt = SR.ReadLine();
                MessageBox.Show(txt);
            }
            while(SR.EndOfStream==false);

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

while(!SR.EndOfStream) daha iyi olurdu. bu şekilde dosyada satır yoksa hata alırsın o yüzden while döngüsüne çevirmen daha doğru. lokal değişkenler küçük harfle başlarsa daha okunaklı olur. ben şöyle yaparım genelde:

 

string line;

using(StreamReader sr = new StreamReader(path))

{

   while((line = sr.ReadLine()) != null)

   {

     ...

   }

}

Hayalet beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Aynen bizde de lokal değişkenler küçük, fonksiyon isimleri büyük harfle başlar ve mutlaka bir eylem belirtir (get, set, al, ver, getir, götür, zart zurt), girintiler iki boşluk :):thumbs:. Carmack' ın kod düzeniyle ilgili notları vardı, biraz aratırsanız bulursunuz sanırım, gerçi yazılan kodlardan da anlaşılıyor az çok. Bu şekilde kendinize standartlar getirirseniz ileride genel manada kod bakımı kolaylaşır.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

 

 

Stream kullanırsanız da using ile kullanmak gerekiyor.

Stream'i using içinde kullanma zorunluluğu yok sanırım değil mi ?  using içinde kullanmanın kodu derli doplu göstermesi dısında bir avantajı var mı acaba ?  MSDN'deki dokümantasyonda hep using içinde gösterilmiş. Hoş bende notepad++ kütüphaneme using 'li olacak şekilde not aldım.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Using içinde kullanılan nesneler otomatik olarak bellekten toplanır (en basit manada), using scope dışında da erişemezsiniz o nesneye. Using kullanmazsanız bu işi sizin yapmanız gerekir, yapmazsanız program altına kaçırır :).

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

bellekten toplama değil unmanaged resource'ları erken temizlemek için gerekli. bellekten temizlenmesi garbace collector çalıştığı zaman. kendin de dispose edersin ama exception olursa disposeun çağrılmasını garantilemek için try finally bloğu yazman lazım bu tip durumlarda göze daha çirkin gözükür.

bide misal MemoryStream de IDisposable ama Dispose'u çağırmak gereksiz.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

aslında çoğu yerde dispose gerekiyor ama bir nevi mecburiyetten özellikle stream yada icomponent'den türeyen sınıflarda bazen gereksiz. bu durum dökümantasyonlarda falan da yazmaz. sınıf idisposable'sa her zaman using yada try finally ile kullanın denir.

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Hayır şunu kullanacaksınız

 

OpenXML 2.5 + ClosedXML :lol:

 

ClosedXML nerden geldi demeyin çok dua edersiniz.

 

İkisini de NuGet ile projenize ekleyin.

 

Excel dosyaları xlsx olmalı bu arada. Eski format dosya çoksa ve çevirmekle uğraşamam derseniz o zaman apache POI.

Hayalet beğendi

Bu mesajı paylaş


Bu mesajın linki
Sosyal ağlarda paylaş

Yorum yazmak için üye olun veya giriş yapın

Yorum yazmak için üye olmanız lazım

Üye ol

Üye olun ve sitemizin tüm avantajlarından yararlanın!


Yeni bir hesap oluştur

Giriş yap

Zaten üyemiz misin? O halde giriş yap


Hemen giriş yap
1 1

  • Bu sayfadaki üyeler   0 üye

    Şu an bu sayfayı görüntüleyen bir üye yok