Gå til innhold

C#: [Løst]Problem med foreach-loop: cannot convert type 'char' to 'string'


Anbefalte innlegg

Fikk feil på to foreach-looper (de to innerste i codeboxen) uten at jeg kan se hva som er feil..

 

foreach (string file in System.IO.Directory.GetFiles("c:\\download\\", "*.*", SearchOption.AllDirectories))
{
string filnavn = System.IO.Path.GetFileName(file).ToString();
string sti = "c:\tmp\"+filnavn;
File.Copy(file, sti);
foreach (string fo in Path.GetExtension(sti).ToString())
               {
                   FileInfo fi = new FileInfo(_mappe + "feilformater.txt");
                   StreamReader sr = new StreamReader(fi.OpenRead());
                   foreach (string read in sr.ReadLine())
                   {
                       if (fo != "." + read)
                           dirbox.Items.Add(sti);
                       else
                       {
                           dirbox.Items.Add(@"<Element fjernet (" + fo + @"-fil)>");
                           _feilmelding = _feilmelding + @"Disketten/CD inneholder feil type fil\n";
                       }
                   }
               }
}

Jeg har en mappe c:\download der jeg henter alle filer, kopierer dem til en midlertidig mappe c:\tmp, og legger dem til i en checkedlistbox hvis de ikke har en extension som er angitt i feilfilformat.txt (exe [crlf] bat [crlf] bmp [crlf] osv).

 

Feilmeldingen er i begge tilfeller "cannot convert type 'char' to 'string'" og den blå underliningen i VS08-ex peker på "foreach".

Lenke til kommentar
Videoannonse
Annonse

Er ikke helt sikker, men det er nok da i dirbox.items.add()-linjene dine som er problemet

 

if (fo != "." + read)
    dirbox.Items.Add(sti.tostring());
else
{
    dirbox.Items.Add(@"<Element fjernet (" + fo + @"-fil)>");
    ....
}

 

Mistenker at en enkel toString() kansje ville hjulpet.

Forsøk også å kommentere ut begge dirbox-linjene og se om det fører til samme feilen.

Jeg har ikke visual studio tilgjengelig akkurat nå, så får ikke gjort noen test selv.

Endret av Sikelik
Lenke til kommentar
Problemet kommer av at Path.GetExtension returnerer en string.

 

Og du looper gjennom hver string i en string; det går ikke.

 

foreach (string fo in Path.GetExtension(sti).ToString())

=

foreach (string fo in string)

Takk, det var opplagt når du sa det :p Men er det noen måte å kjøre foreach-loop sammen med streamreader på eller er while-løkke den eneste gode løsningen?

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å
×
×
  • Opprett ny...