Permalänk
Medlem
Skrivet av Teknocide:

Men sluta krångla till saker nu
Varför ska du ha en jagged array? En bil har en modell, ett registreringsnummer, en ägare osv. Varför försöker du spara denna information i en List<string[]>? Du använder bara den första positionen, [0], så listan är helt meningslös. Om din Car har en konstruktor som tar sju argument av typen string så är det dessutom onödigt tillkrånglat att ta dessa lösa bitar data och sedan stoppa in dem i en array, när de är både flexiblare och smidigare att spara dem i properties.

Att det bara kommer upp en bil tror jag fortfarande beror på att du har listBox1.Items.Add(...) utanför loopen.

Dom sparas där så jag kan komma åt dom senare, eller redigera dom vid senare tillfälle. Så om jag specifikt vill ändra den tredje bilen så gör jag det genom att ha lagrat dom där och sedan ändra dom. Jag måste kunna redigera specifika bilar.. Hur skulle du gjort allt det här då ? :<

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Dom sparas där så jag kan komma åt dom senare, eller redigera dom vid senare tillfälle. Så om jag specifikt vill ändra den tredje bilen så gör jag det genom att ha lagrat dom där och sedan ändra dom. Jag måste kunna redigera specifika bilar.. Hur skulle du gjort allt det här då ? :<

Ok, vi vänder på steken: förklara varför du behöver en jagged array. Det kan hända att det är jag som inte förstår hur du tänker. Ge kodexempel.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Ok, vi vänder på steken: förklara varför du behöver en jagged array. Det kan hända att det är jag som inte förstår hur du tänker. Ge kodexempel.

Situationen ser ut såhär:

Vad man ska kunna: redigera, lagra, läsa in och skapa i programmet. Redigera, lagra och skapa är löst.

Vi har en fil som ska läsas in. Vi har en fil som ska skrivas till fil. Vi har ett program som skapar en "bil" som sedan ska kunna skrivas eller läsas in.

Filen:
Filen måste kunna läsas per rad, alltså: 1 rad med 7 olika grejer i (varierande bil information)

Inläsning:
Filen som läsas in måste vara oberoende av mängden rader och kunna bara skapa nya bilar av varje rad med information
(som klarar av att komma förbi if-satsen som kollar det)

Inläsning: inte klart. Skriva: klart. Skapa bilen och layout: klart.

Varför?

Jo för att vad jag förstått kan en jagged array innehålla två indexer, alltså borde man per rad öka första index med 1 så det ser ut ungefär såhär:
Filen:

ABC123, 740, Volvo, 2011, Metallisk svart, 1000, 15000
SAE123, Audi, A4, 2011, Metallisk svart, 1000, 15000

I jagged borde det se ut ungefär såhär för att det ska funka som jag tänkt mig:

[0]: första raden
[1]: andra raden
osv..

så egentligen skulle det väl duga om varje rad som blir inläst blir inlagda i listan typ:
string[] names = new string[7] {"ABC123", "740", "Volvo"}; osv

men listan får ju inte övergå 7 eftersom Car bara tar max 7 st strings, så om vi läser in en hel fil som har 2 rader (14 med andra ord som ska in) så överstiger det och
helt plötsligt blir det inte möjligt..

Steg:
1. Loopa array
2. För varje rad lägg till i en ny "Car"
3. Avsluta loop

Så av de två raderna ska jag få två bilar.

Programmet skriver ut filen galant, läser inte in filen, kan skapa bilar.
Målet är att kunna spara bilarna lokalt i en .txt fil som sedan läser in bilarna igen vid annat tillfälle.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Situationen ser ut såhär:

Vad man ska kunna: redigera, lagra, läsa in och skapa i programmet. Redigera, lagra och skapa är löst.

Vi har en fil som ska läsas in. Vi har en fil som ska skrivas till fil. Vi har ett program som skapar en "bil" som sedan ska kunna skrivas eller läsas in.

Filen:
Filen måste kunna läsas per rad, alltså: 1 rad med 7 olika grejer i (varierande bil information)

Inläsning:
Filen som läsas in måste vara oberoende av mängden rader och kunna bara skapa nya bilar av varje rad med information
(som klarar av att komma förbi if-satsen som kollar det)

Inläsning: inte klart. Skriva: klart. Skapa bilen och layout: klart.

Varför?

Jo för att vad jag förstått kan en jagged array innehålla två indexer, alltså borde man per rad öka första index med 1 så det ser ut ungefär såhär:
Filen:

ABC123, 740, Volvo, 2011, Metallisk svart, 1000, 15000
SAE123, Audi, A4, 2011, Metallisk svart, 1000, 15000

I jagged borde det se ut ungefär såhär för att det ska funka som jag tänkt mig:

[0]: första raden
[1]: andra raden
osv..

så egentligen skulle det väl duga om varje rad som blir inläst blir inlagda i listan typ:
string[] names = new string[7] {"ABC123", "740", "Volvo"}; osv

men listan får ju inte övergå 7 eftersom Car bara tar max 7 st strings, så om vi läser in en hel fil som har 2 rader (14 med andra ord som ska in) så överstiger det och
helt plötsligt blir det inte möjligt..

Steg:
1. Loopa array
2. För varje rad lägg till i en ny "Car"
3. Avsluta loop

Så av de två raderna ska jag få två bilar.

Programmet skriver ut filen galant, läser inte in filen, kan skapa bilar.
Målet är att kunna spara bilarna lokalt i en .txt fil som sedan läser in bilarna igen vid annat tillfälle.

Jag har förstått det mesta du skrev här förutom varför du vill använda en jagged array. Det förstår jag fortfarande inte.

Vi har alltså en fil med okänt antal rader, där varje rad innehåller sju strängar separerade av ,
Varje rad motsvarar en bil. 1 rad = 1 bil.
Du har redan listat ut att du kan skapa en array med bilinformation genom att köra .Split(',') på raden.

Det jag strukit under ska aldrig inträffa om du sparar filen som du angett; med sju strängar avskilda av , på varje rad.

Pseudokod, inläsning: skapa en lista för att hålla alla bilar öppna fil loopa medan det finns rader kvar att läsa i filen { läs en rad splitta raden på , skapa ny bil genom att skicka in bitarna lägg in bilen i bil-listan lägg till bilens registreringsnummer i listBox } // repetera stäng fil Pseudokod, spara fil: öppna fil för läsning. skriv över den gamla loopa över listan med bilar { ta en bil anropa bilens ToString för att få bilens information i en kommaseparerad sträng skriv strängen som en rad i filen } stäng fil

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Förstår hur du tänker och så är det jag tänker.. men kan fortfarande inte formulera det till kod..

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem
Skrivet av Teknocide:

Löste problemet genom att:

  1. Läsa in hela filen

  2. Splitta till mindre strängar (separata rader)

  3. Loopa listan för att ta ut alla rader

  4. Koda om konstruktor till att ta en sträng

  5. Splitta raden genom string.Split(',');

  6. Definiera variabler i car klassen genom [0]-[6]

  7. Klart.

Funkar perfekt nu tack för all hjälp Teknocide och alla andra.

Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40