Zmiana rozmiaru tablic

0

Wyczytalem ze w C# nie da sie zmienic rozmiaru tablicy tak wiec sie pytam jak to ominac? Bo w C mialem sobie malloc i realloc i bylo dobrze. Ale jest jeszcze jeden problem bo dane przechowywane w tablicy beda typu STRING wiec dlugosc jest rozna :(

HELP!

0

Ani w c/c++ ani w c# nie mozna zmienic rozmiaru raz przydzielonej tablicy. Mozesz zarezerwowac nowa i skopiowac do niej dane albo uzyc czegos z System.Collections, np. ArrayList.

pozdrawiam
johny

0

Znalazlem takie cos ze jak zrobie jeszcze raz wywaolanie tworzenia tablicy z klasy to ta wczesniejsza zostaje kasowana a ta ktora stworzylismy ja zastepuje, dobrze kombinuje czy nie?

0

No tak, ale tracisz stara, nie? Mozna oczywiscie przypisac nowa referencje (bo tak to wlasnie wyglada), ale w tym momencie informacje o starej gina... Nawet jesli je zapiszesz, to nowa tablica jest pusta i i tak musisz dane skopiowac. Juz latwiej jest uzyc listy i po prostu dodawac elementy.

pozdrawiam
johny

0

Hej a Array.Resize<T> ?

 string[] k = new string[5];
            k[0] = "UUU";
            k[1] = "ZZZ";
            Array.Resize<string>(ref k, 10);
            Console.WriteLine("{0} {1}", k[0], k[1]);
            Console.WriteLine(k.Length);
0

fucktycznie, zapomnialo mi sie, sorki :)

pozdrawiam
johny

0

Tzn tym sposobem co kolega podal mozna zmieniac rozmiar tablicy? Jesli jest jak mysle to sie chyba posikam ze szczescia :)

0

jonhy - zdarza się, nawet najlepszym ;)

Kuter skuter - na to wygląda, sprawdź z resztą sam ;) choć nadal nie rozumiem dlaczego nie mogłeś tego zrobić od razu na parę innych sposobów :)

0
Lukke napisał(a)

jonhy - zdarza się, nawet najlepszym ;)

Mi tam daleko do najlepszych, wiec tym bardziej :)

Lukke napisał(a)

Kuter skuter - na to wygląda, sprawdź z resztą sam ;) choć nadal nie rozumiem dlaczego nie mogłeś tego zrobić od razu na parę innych sposobów :)

Fakt, w innych jezykach da sie zyc bez tego, tutaj tez by sie dalo. Ale skoro mozna to w sumie czemu nie korzystac? :)

pozdrawiam
johny

0

Zeby nie zasmiecac to mam jeszcze jeden problem: Gdzie wewalic kod aby sie wykonywal po pojawieniu sie calego okna programu? Chce zrobic progress bar ladowania plikow itd a jak zaladuje to go schowac i pokazac reszte komponentow, wewalalem wszedzi i byly 2 efekty: error lub formatka sie jeszcze nie pokazala xD daje kod:

[cpp]
/*

  • Created by Paweł Jabłoński
  • User: Demoh
  • Date: 2006-08-24
  • Time: 12:19
    */

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using System.Threading;

namespace xomag
{
/// <summary>
/// Description of MainForm.
/// </summary>
public partial class MainForm
{

	[STAThread]
	public static void Main(string[] args)
	{
		
		Application.EnableVisualStyles();
		Application.SetCompatibleTextRenderingDefault(false);
		Application.Run(new MainForm());

	}
	
	public MainForm()
	{
		//
		// The InitializeComponent() call is required for Windows Forms designer support.
		//
		InitializeComponent();
		//
		// TODO: Add constructor code after the InitializeComponent() call.
		//
	}
	
	void MainFormLoad(object sender, System.EventArgs e)
	{
		
		
		
		//tutaj wszystko startuje
		
		//ladowanie pliku
		
		//jesli nie ma to tworzymy pusty i 1 magazyn
		
		
		//jesli jest to wczytujemy dane
		
		//ustawiamy godzine
		if(DateTime.Now.Minute > 9)
		{
			label1.Text = DateTime.Now.Day + "." + DateTime.Now.Month + "." + DateTime.Now.Year + "   " + DateTime.Now.Hour + ":" + DateTime.Now.Minute;
		}
		else
		{
			label1.Text = DateTime.Now.Day + "." + DateTime.Now.Month + "." + DateTime.Now.Year + "   " + DateTime.Now.Hour + ":0" + DateTime.Now.Minute;
		}

		
		Thread.Sleep(3000);
		//chowamy ladowanie i pokazujemy program
		tabControl1.Visible = true;
		
		
	}
	
	void TabPage1Click(object sender, System.EventArgs e)
	{
		
	}
	
	void BackgroundWorker1DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
	{
		
	}
	
	void ComboBox1SelectedIndexChanged(object sender, System.EventArgs e)
	{
		
	}
	
	void ListView1SelectedIndexChanged(object sender, System.EventArgs e)
	{
		
	}
	
	void Timer1Tick(object sender, System.EventArgs e)
	{
		if(DateTime.Now.Minute > 9)
		{
			label1.Text = DateTime.Now.Day + "." + DateTime.Now.Month + "." + DateTime.Now.Year + "   " + DateTime.Now.Hour + ":" + DateTime.Now.Minute;
		}
		else
		{
			label1.Text = DateTime.Now.Day + "." + DateTime.Now.Month + "." + DateTime.Now.Year + "   " + DateTime.Now.Hour + ":0" + DateTime.Now.Minute;
		}
	}
}

}[/cpp]

1 użytkowników online, w tym zalogowanych: 0, gości: 1