Gå til innhold

Anbefalte innlegg

Hei!

Hvordan setter man inn et nytt element bakerst i et array?

f.eks hvis du har

 

w[0] = "ele. 0";

w[1] = "ele. 1";

w[2] = "ele. 2";

 

så tar man f.eks

 

array.insertatbottom(w[]);

int antElementer = w[].arraycount;

w[antElementer] = "Dette elementet ble lagt til";

 

Finnes det noen slike kommandoer?

 

 

1ting til:

Hvordan kan jeg lese 1linje fra en fil, kalle en funksjon, så lese neste linje, kalle en funksjon, so on..

 

f.eks

 

hvis ikke på slutt av filen
	 string linje = Les 1 linje
	 funksjon(linje)
neste linje

 

(dårlige eksempler da :/ )

Endret av Hayer
Lenke til kommentar
Videoannonse
Annonse

string[] test;

test[0] = "Test!";

test[1] = "Test1";

int antElement = test.Length;

Console.WriteLine(antElement);

 

Funker ikke :/

 

slenger på enda et spm, hvordan lager man globale variabler/arrays?

Endret av Hayer
Lenke til kommentar

Det er fordi du ikke har initialisert test objektet ditt. Globale objekter lager du innenfor klassen, mens lokale objekter lager du innenfor metoder.

Eks under:

my_global_array-objektet kan refereres til Main(), mens my_local_array-objektet bare kan refereres til INNENFOR Main()-metoden.

class Program

   {
       private static string[] my_global_array = new string[3];

       static void Main(string[] args)
       {
           string[] my_local_array = new string[2];
           my_local_array[0] = "Test1";
           my_local_array[1] = "Test2";
           Console.WriteLine("Local array length: " + my_local_array.Length);
           Console.WriteLine("Global array length: " + my_global_array.Length);
           Console.ReadKey();
       }
   }

 

Det virker som om du mangler en del grunnleggende kunnskap om programmering, du kan jo starte her:

http://no.wikibooks.org/wiki/Csharp

Lenke til kommentar

Dette er litt barnelærdom egentlig...

 

string[] test = new string[2];

test[0] = "Test!";

test[1] = "Test1";

int antElement = test.Length;

Console.WriteLine(antElement);

 

Globale variabler skal du ikke bruke, bad practice (sånn generelt sett i alle fall, og i alle fall ikke før du vet hva du driver med)=P

 

Vil anbefale deg muligens å kikke litt på disse sidene. Kjør gjennom hele opplæringsprogrammet, så kan du spørre hvis det er noe du ikke forstår. Spesielt Tier 1 delene er noe du bør kunne på rams. Må lære å krype før du kan gå :)

Endret av The Jackal
Lenke til kommentar

string[] test = new string[2];

test[0] = "Test!";

test[1] = "Test1";

int antElement = test.Length;

Console.WriteLine(antElement);

 

blir det ikke da en 'fixed' array?

 

enda 1spm, før jeg stikker til sengs:

hvordan kan jeg bruke forms i en console app.?

Lenke til kommentar
string[] test = new string[2];

test[0] = "Test!";

test[1] = "Test1";

int antElement = test.Length;

Console.WriteLine(antElement);

 

blir det ikke da en 'fixed' array?

 

enda 1spm, før jeg stikker til sengs:

hvordan kan jeg bruke forms i en console app.?

 

Stemmer at det blir en fixed array...derfor du bør bruke List<string> som GeirGrusom nevnte.

 

Hvorfor bruke forms i en console app? Ja du kan det...men hvorfor ikke lage det som en forms app da? Du må legge til System.Windows.Forms som reference i prosjektet ditt hvis det i utgangspunktet er en console app. Som nevnt, les linkene du har fått fra Xtc og meg nå. Du mangler svært mange basiskunnskaper som blir litt for dumt å sitte å svare på.

Lenke til kommentar

		static bool pk_CreateForm(int height, int width, string caption)
	{
		try
		{
			System.Windows.Forms.Form frmNew = new Form();
			frmNew.Height = height;
			frmNew.Width = width;
			frmNew.Text = caption;
			frmNew.Show();
			return true;
		}
		catch
		{
			return false;
		}
	}

 

Når jeg kaller denne funksjonen fra consolen så blinker det bare en gang FORT, så kommer fortsetter den.. Ser ikke noen feil jeg, men kansje siden jeg har kodet det:P

la inn en loop slik:

static bool pk_CreateForm(int height, int width, string caption)
	{
		try
		{
			System.Windows.Forms.Form frmNew = new Form();
			frmNew.Height = height;
			frmNew.Width = width;
			frmNew.Text = caption;
			int ad = 0;
			while(ad < 9999999999)
			{
				ad += 1;
				frmNew.Show();
			}
			return true;
		}
		catch
		{
			return false;
		}
	}

Da kom formen frem, men svært lite jeg kan gjøre mens den driver på :/

Endret av Hayer
Lenke til kommentar

jeg vet at jeg ikke får gjort noe, men problemet er at hvis jeg bare sier

frmNew.Show();

så blinker den bare engang, å forsvinner igjen :/

 

int indx = 4;

ArrayList test = new ArrayList();

test.Add("string 1");

test.Add("string 2");

test.Add("string 3");

test.Add("string 4, som skal ut");

test.Add("string 5");

 

string testString = test[indx];

return testString;

 

Gir feilen:

Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)

 

why?

 

å ja, har lest i gjennom noen par av de tutsa nå

Endret av Hayer
Lenke til kommentar

JEBUS! Generics folkens!

 

List<string> lager en liste som inneholder en array av strings, dette er .NET 2.0+ ikke 1.1

 

Ikke bruk ArrayList hvis ikke du må, det er ikke bra for ytelsen!

 

Rask innføring i generics:

 

En generic klasse, interface, struktur eller metode er en del der et eller flere av feltene er av en ubestemt datatype.

Det vil si at datatypen er ikke bestemt før objektet initsialiseres.

 

Et generic objekt deklareres ved at datatypene legges ved som parameter i mellom < >

Når du deklarerer objektet skal dette være navnene du bruker på dem i implementasjonen.

 

f.eks.

 

public class MyGenericClass<T>
{
 string m_name;
 T m_some_variable;

 public T SomeVariable { get { return m_some_variable; } set {m_some_variable = value; }}
 public string Name { get { return m_name; } set { m_name = value; }}

 public MyGenericClass(T value, string name)
 {
m_some_variable = value;
m_name = name;
 }
}

 

Det som er flott nå, er at denne klassen kan m_some_variable være av en hvilken som helst datatype. Det at datatypen fortsatt blir betsemt, og ikke blir object, gjør at koden blir betydelig mer effektiv.

En generic klasse initsialiseres slik:

 

MyGenericClass<int> myClass = new MyGenericClass<int>(100, "Hei på deg");

 

Etter dette vil feltet myClass.m_some_variable være av typen int.

 

Dette kan også være hendig i interfaces og strukturer:

 

public interface IPosition<T>
{
 T X { get; set; }
 T Y { get; set; }
 T Z { get; set; }
}

public struct VertexTexNormal<T> : IVertex<T>
{
 T m_x;
 T m_y;
 T m_z;
 float m_tx;
 float m_ty;
 float m_nx;
 float m_ny;
 float m_nz;

 public T X { get { return m_x; } set { m_x = value; } }
 public T Y { get { return m_y; } set { m_y = value; } }
 public T Z { get { return m_z; } set { m_z = value; } }

 public float TX { get { return m_tx; } set { m_tx = value; }}
 public float TY { get { return m_ty; } set { m_ty = value; }}

 public float NX { get { return m_nx; }set { m_nx = value;} }
 public float NY { get { return m_ny; }set { m_ny = value;} }
 public float NZ { get { return m_nz; }set { m_nz = value;} }
}

 

Nå kan en vertex sjekkes om den implementerer IVertex<float> f.eks.

 

public class myclass
{
 List<VertexTexNormal> m_vertex_array;
 public MyClass()
 {
m_vertex_array = new List<VertexTexNormal>();

//(les inn vertex data eller noe)

// Generer normaler
GenerateNormals(m_vertex_array.ToArray() as IVertex<float>[]);
 }
 public void GenerateNormals(IVertex<float>[] vb)
 {
for(int i = 0;i < vb.Length; i++)
{
  // Behandle vertex data
}
 }
}

 

Merk derimot at dette ikke er templates, derfor kan man ikke lage dette som en generell funksjon, man må skrive en funksjon for float, en for double etc.

Endret av GeirGrusom
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...