Aceminin C# sorulari

Başlatan z, 30 Mayıs 2012, 08:19:05

YARARMAN

Alıntı yapılan: z - 02 Haziran 2012, 01:28:15
Sorun değil, tekrar kodlarinizi indiririm. Simdilik en son istedigim otomatik space gecis ve satir sonunda otomatik alta gecis var ve memnunum.

Ekranimda form1.cs* varken

Solution Explorer'dan projeye sag tiklayip add sectigimde bana New project ve Existing project olmak uzere 2 seceneki sunuyor,

Add->New Class gelmedi.

Anlasilmaz bir durumdaysam ekran goruntulerimi vereyim.

Sen projeye değil de solution üzerine sağ tıklıyorsundur.
Zira solution üzerine sağ tıklayınca Add menüsünde dediğin seçenekler belirir.

z

Hocam tamam dediklerinizi uyguladim ve  kendi programimda Toolboxda Hexbox i alip surukleyip usb programindaki foruma tasiyabiliyorum.

Ancak tam koydugum esnada hata veriyor.

Fakat bu duruma asinayim. Cunku verdiginiz orjinal kodlarinizda forma 2. bir Hexbox koymak istedigimde ayni hatayi almistim. Cozum olarak zaten form uzerine koydugunuz HexBoxu copy ile alip past ile yapistirarak ikinci bir hexbox olusturmustum.

Bu durumda sorun nedir?

Mesajin ilk iki satiri su sekilde

Failed to create component 'HexBox'. This error message follows:
'System.IndexOutOfRangeException: Index was outside the bounds of the array'
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

YARARMAN

HexBox denetiminde bir sorun var.
HexBox.cs dosyasının içeriğini tümden buraya eklersen sevinirim.
Code etiketi içinde ekleyin.

cicjoe

Problem icerik bosken de satirlara erismeye calismasindan kaynaklaniyodu. O nedenle en guncel halini kopyalayin demistim =)
this.Lines.Length != 0 kontrolunu ekledim. Son halini tumden tekrar yapistiriyim.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsFormsApplication1
{
	class HexBox : TextBox
	{
		public int Byte { get; set; }

		public HexBox()
		{
			//olusturulurken icinin doldurulmasi
			string line = String.Empty;
			for (int i = 0; i < 8; i++)	//her satir 8 byte
				line += " 00";
			for (int i = 0; i < 8; i++) //8 satir
				this.Text += Convert.ToString((i*8), 16).ComplateDigit(2) + ":" + line + " " + Environment.NewLine;

			//coklu satir
			this.Multiline = true;
			//ilk boyut
			this.Size = new Size(100, 60);

			this.SelectionStart = 4;
		}

		protected override void OnKeyPress(KeyPressEventArgs e)
		{
			e.KeyChar = Char.ToUpper(e.KeyChar);	//basilan tusu buyuk harf yap

			if ((this.SelectionStart % 3 == 0 && e.KeyChar == ' ') ||	//eger araya denk gelirse bosluk tusu kabul
				(this.SelectionStart % 3 != 0) &&	//eger bosluga denk gelmezse, basilan tus uygun mu diye bakmaliyiz
				(e.KeyChar.IsHex()) &&	//0-9 A-F arasi
				(this.SelectionStart % (this.Lines[0].Length+2) > 3) &&		//her satirin ilk 3 karakteri olmamali
				(this.SelectionStart % (this.Lines[0].Length+2) < this.Lines[0].Length))	//satir sonundaki bos yer olmamali
			{
				int current = this.SelectionStart;		//tusun basildigi yeri al
				this.Text = this.Text.Remove(current, 1);	//ordaki karakteri sil
				this.SelectionStart = current;	//pozisyonu tekrar oraya gotur
				base.OnKeyPress(e);	//oraya tus basilmasina izin ver
			}
			else
			{
				e.Handled = true;
			}
		}

		protected override void OnTextChanged(EventArgs e)
		{
			if (this.SelectionStart % 3 == 0)
				this.SelectionStart++;
			if (this.Lines.Length != 0 &&
				(this.SelectionStart % (this.Lines[0].Length+2) == (this.Lines[0].Length)) &&
				(this.SelectionStart < (this.Text.Length - 7)))
				this.SelectionStart += 6;

			base.OnTextChanged(e);
		}
	}

	static class Ext
	{
		//char nesnesine metod ekle
		public static bool IsHex(this char c)
		{
			c = Char.ToUpper(c);
			return (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9');
		}

		//string nesnesine metod ekle
		public static string ComplateDigit(this string s, int digitCount)
		{
			return new String('0', digitCount-s.Length) + s;
		}
	}
}

YARARMAN

Denedim, ellerine sağlık cicjoe, tam da z'nin istediği gibi olmuş. :)

z

Sagolun sorun bitti.

Umarim herikinizin de vereceginiz kurs sayesinde C# da belli bir seviyeye geliriz.

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

YARARMAN

Ben hiç yardımcı olamadım bu sefer. :)
cicjoe iyi iş çıkarttı.

cicjoe

Tesekkur ederim, iyi calismalar =)

z

Delphide kullandigimiz JEDI yi bir sekilde C# da kullanmanin caresi varmidir?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

t2

Jedi'nin beğendiğin  taraflarından activex nesnesi veya başka dll yaparsın. C#'da kullanırsın

z

Boyle bir calisman oldumu? C# de sen ne kullaniyorsun? umng.dll i hic begenmedim yada bunu tam kesfedemedim. Alternatif ariyorum. umng.dll i kim yazmis dokumantasyonu yapilmismi bilgin varmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

YARARMAN

Alıntı yapılan: z - 02 Haziran 2012, 16:06:44
Boyle bir calisman oldumu? C# de sen ne kullaniyorsun? umng.dll i hic begenmedim yada bunu tam kesfedemedim. Alternatif ariyorum. umng.dll i kim yazmis dokumantasyonu yapilmismi bilgin varmi?

Eve geçtiğimde bu USB konusunda sana yardımcı olmaya çalışacağım...

t2


Alıntı YapBoyle bir calisman oldumu? C# de sen ne kullaniyorsun?

Ben delphide beğendiğim her hangi güzel fonksiyonu activex denetimine çevirebiliyorum. Zor bişey değil. Bunu yaptıktan sonra c#'da kullanabiliyorsun.

z

#58
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin

        for i:=0 to $7FFF do
          begin
             Label1.Caption:=inttostr(i);
             Label1.refresh;
          end;

end;


Yukaridaki kod Delphi'ye ait.
Asagidakiler de C#'a

Her ikisini de calistirdim ve sasirdim. Birisi digerine nal toplatiyor. Kim kime toplatiyor dersiniz?

       
        private void button1_Click(object sender, EventArgs e)
        {
          int i;
          for (i = 0; i < 0x7FFF; i++)
          {
              label1.Text = i.ToString();
              label1.Refresh();
          }
        }
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#59
Programlardan birisi calismayi 23 (yirmi uc) sn de bitirdi.

Digeri sadece 4 (dort) sn de.

Kodlarin kostugu makina: P4, 2.2Ghz, 2GByte Ram, XP,  Intel82845G li basit bir VGA karti
Bana e^st de diyebilirsiniz.   www.cncdesigner.com