Avatar billede mborik Nybegynder
16. november 2004 - 00:51 Der er 5 kommentarer

Prob. med streng (sti- og filnavn) i forb. med skrivning af fil

Jeg er ved at konvertere et program skrevet i Java 1.4.2 til C# & .NET frameworket.  Jeg skal skrive et antal filer til en mappe på et drev.  Hver fil skal have et individuelt nummer og jeg arbejder derfor med en for-løkke.  Filerne skal hedde fil-1.txt, fil-2.txt … fil-n.txt

Jeg erklærer en StreamWriter file = new StreamWriter(@"d:\mappe\fil-1.txt"); og det virker fint. 

Men når jeg så vil erstatte den statiske sti- og filnavn med variable går det galt.  Jeg har debugget en del, da jeg tilsyneladende ikke kan finde ud af den rette formatering af sti- og filnavn (som jo virkede fint i Java programmet).

Jeg forestiller mig at jeg skulle kunne indsætte variable i strengen som StreamWriter tager som aktuel parameter.  Men det går ikke.  Jeg gør følgende:

string mappe = ””; // bliver sat lig med et textboxfelt i en Form
string fil = ””;  // bliver sat lig med et textboxfelt i en Form
int taeller =1;

For(int i = 0; i<antal; i++)
{
StreamWriter file = new StreamWriter(@"d:\”+mappe+”\”+fil+”-“+taeller+”.txt");
// i en try-catch skabes filens indhold og filen lukkes efter hver iteration i for-løkken
taeller ++;
}

Men det virker ikke, så jeg prøvede at bygge sti- og filnavn op af flere gange:

FilNavn = mappe+"-"+nummer+".txt";
string destination = "F:\"+mappe+"\"+FilNavn;
MessageBox.Show("destination er :"+destination);
StreamWriter file = new StreamWriter("destination");

Men det giver andre problemer.  Ved hjælp af MessageBox kan jeg opfange, at den destination er skrup forkert formateret.  Man skulle tro at destination var lig med f:\mappe\fil-1.txt men den ser således ud: 
F:\System.Windows.Forms.TextBox, Text: Tekst\System.Windows.Forms.TextBox, Text: Fil-1.txt
(Tekst er en eksisterende mappe på F-drevet og Fil-1.txt er den fil der skal oprettes)

Resultatet er naturligvis, at filen ikke bliver skrevet.

Hvad er det jeg gør forkert?

Mvh Mads
Avatar billede kaffe Nybegynder
16. november 2004 - 05:39 #1
For(int i = 1; i <= antal; i++){
    StreamWriter file = new StreamWriter(@"d:\" + mappe.Text + @"\" + fil.Text + "-" + i.ToString() + ".txt");
}
Avatar billede arne_v Ekspert
16. november 2004 - 07:32 #2
Fordi der skal .Text på felterne.

(ToString på tælleren er overflødig)
Avatar billede mborik Nybegynder
16. november 2004 - 13:02 #3
Tak kaffe og arne_v

Desværre virker dette med .Text ikke.  Jeg henter ikke variable direkte fra en Form.  Jeg forstår udmærket brugen af .Text ;-).  Jeg har nemlig ikke implementeret metoderne til fil- skrivningen direkte i den klasse, der indeholder Formen. 

I Formen kalder jeg en metode i klassen 'Fil' med to parametre SkrivFil(string mappe, int antal);

private void btn_Ok_Click(object sender, System.EventArgs e)
{
Antal = Convert.ToInt32(txb_antal.Text);
Mappe = txb_mappe.Text;
b.SkrivFil(Antal, Mappe);
}

Meget forkortet sker der følgende i en anden klasse:

public void SkrivFil(Antal, Mappe)
{
this.Antal = Antal;
this.Mappe = Mappe;
   
for(int i=0; i<Antal; i++){
StreamWriter sw = new StreamWriter@”d:\bla\bla\bla.txt”);
try{
}
catch(Exception eX){
}
}
}

Nå, jeg har ind i mellem oplevet, at man bare skal begynde for fra; Oprette et nyt projekt og så genbruge sin kildekode...

Mvh Mads
Avatar billede mborik Nybegynder
16. november 2004 - 21:46 #4
Hum...

Medicinen virkede;
Jeg oprettede et nyt tomt projekt, indsatte de kodefiler jeg havde lavet, kompilerede og så kørte det.  Om jeg fatter, hvad der sker i sådan en situation...

Mvh Mads
Avatar billede kaffe Nybegynder
17. november 2004 - 02:47 #5
Tjaah, sådan er det ind i mellem.
Bare det kører...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester