Avatar billede bjarnefilm Juniormester
30. december 2011 - 18:35 Der er 14 kommentarer og
1 løsning

Program bruger ikke det rigtige filnavn

Her er en programstump af csharp. Når jeg kører programmet (dvs trykker på knappen), så kommer fejl K1. Hvorfor virker det ikke?

private void button1_Click(object sender, EventArgs e)
        {
            // Her er koden for kalender knappen.
            // Hent sti og navn for filen.
            string kalender_s = "C:\\sombok\\kalender-2012.pdf";
            // Her får kalender_s den nye og rigtige værdi.

            if ( System.IO.File.Exists( kalender_s ) == true )
            {
                try
                {
                    FileStream fileStream = new FileStream(@"kalender_s", FileMode.Open, FileAccess.Read);
  // Her bruger programmet en tidligere værdi for kalender_s.
  // Hvorfor sker det, når kalender_s har fået en ny værdi?
  // Den gamle værdi er: Filen 'C:\Users\bjs\Desktop\Filer fra Store\Færdigt Csharp\Sommerhus_booking\toftevej\bin\Debug\kalender_s' blev ikke fundet
                    fileStream.Close() ;
                }
                catch
                {
                    // Fejl meddelelse her.
                    // Brødtekst
                    string bt = "Programmet kan ikke finde kalenderen.\nMuligvis ingen internet forbindelse.\nFejl K1.";
                    // Overskrift
                    string os = "Fejlmeddelse.";
                    MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            else
            {
                // Fejl meddelelse her.
                // Brødtekst
                string bt = "Programmet kan ikke finde kalenderen.\nMuligvis ingen internet forbindelse.\nFejl K2.";
                // Overskrift
                string os = "Fejlmeddelse.";
                MessageBox.Show(bt, os, MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Avatar billede erikjacobsen Ekspert
30. december 2011 - 18:40 #1
Mener du ikke
  FileStream fileStream = new FileStream(kalender_s, FileMode.Open, FileAccess.Read);
Avatar billede bjarnefilm Juniormester
30. december 2011 - 18:54 #2
Jeg har prøvet med:
FileStream fileStream = new FileStream("kalender_s", FileMode.Open, FileAccess.Read);

Det giver samme resultat. Men koden ser pænere ud, så jeg beholder det.

MVH
Bjarne
Avatar billede erikjacobsen Ekspert
30. december 2011 - 18:58 #3
Der er ret væsentlig forskel på

  FileStream fileStream = new FileStream("kalender_s", FileMode.Open, FileAccess.Read);

og

  FileStream fileStream = new FileStream(kalender_s, FileMode.Open, FileAccess.Read);
Avatar billede bjarnefilm Juniormester
30. december 2011 - 19:05 #4
Nu har jeg fjernet apostrofferne, som du også skrev første gang. Når jeg nu trykker på knappen, sker der ingen ting. Programmet åbner ikke pdf-filen og der kommer ikke nogen fejl-meddelelse. Programmet kører stadig, det kan uden videre lukkes.
Avatar billede erikjacobsen Ekspert
30. december 2011 - 19:10 #5
Den åbner vel filen i fileStream, og lukker den igen med det samme.
Avatar billede bjarnefilm Juniormester
30. december 2011 - 19:14 #6
Jeg har prøvet med:

// fileStream.Close() ;

Det har ingen effekt.
Avatar billede bjarnefilm Juniormester
30. december 2011 - 19:16 #7
Jeg har det fra den her hjemmeside:

http://www.csharp-examples.net/filestream-open-file/
Avatar billede erikjacobsen Ekspert
30. december 2011 - 19:16 #8
Filer bør lukkes, når man ikke bruger dem længere. Men du laver ingenting mellem du åbner og lukker, så der sker ingenting. Hvad skal du have gjort?
Avatar billede erikjacobsen Ekspert
30. december 2011 - 19:16 #9
Så i det link du henviser til mangler du

  // read from file or write to file
Avatar billede bjarnefilm Juniormester
30. december 2011 - 19:20 #10
Den fil, der skal åbnes, er en kalender. Filen er en pdf-fil. Når brugeren trykker på knappen, skal kalenderen komme op på skærmen. Lige som når man i stifinder dobbelt-klikker. Når brugeren har kigget på kalenderen, lukker han den som enhver anden pdf-fil.
Avatar billede erikjacobsen Ekspert
30. december 2011 - 19:22 #11
Nåh, men så er det en helt anden vej du skal. Det du var i gang med var at læse filen igennem, linie for linie i dit C# program, og det kommer der ikke noget synderligt læseligt ud af.

Det kræver jo så at brugeren har en PDF-læser installeret, og hvis han oveni har associeret .pdf til at åbne den, så skulle du kunne bruge:

    System.Diagnostics.Process.Start(MyFile.pdf)

eller måske blot

    Process.Start(MyFile.pdf)
Avatar billede erikjacobsen Ekspert
30. december 2011 - 19:22 #12
Ups, det skal være

    System.Diagnostics.Process.Start(kalender_s)

eller måske blot

    Process.Start(kalender_s)
Avatar billede bjarnefilm Juniormester
30. december 2011 - 19:31 #13
Det virker. Jeg prøvede først med den korte, "Process.Start(kalender_s)". Men der kom en fejlmeddelelse. Så prøvede jeg med "System.Diagnostics.Process.Start(kalender_s)". Og det virker. Når jeg trykker på knappen, så åbner programmet pdf-filen. Smid et svar, så får du pointene, selvom du ikke samler på point.
Avatar billede erikjacobsen Ekspert
30. december 2011 - 19:35 #14
Jeg samler slet ikke på point, tak. Svar selv, og accepter dit eget svar.
Avatar billede bjarnefilm Juniormester
30. december 2011 - 19:39 #15
Lukketid.
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



IT-JOB