[c#] nieuwe instantie obj in loop die vooraf is gedefinieerd

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
Ik zit waarschijnlijk met een heel dom probleem, maar hey ik kom vanuit PHP hier naar toe :+

In elk geval heb ik een loop, die wat dingen doet met "outputDocument". Nu kan het echter zo zijn dat ik op een gegeven moment "klaar" ben, en dus opnieuw wil beginnen met deze class. Mocht ik hem nu initiëren vóór de loop, dan kan ik hem niet opnieuw aanroepen omdat hij dan buiten de scope valt...
Ik heb nu gewoon een dikke brainfart over hoe ik dit nu ga fixen..


C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
        public void splitPDF(string filename)
        {
            
            PdfDocument inputDocument = PdfReader.Open(filename, PdfDocumentOpenMode.Import);
            string name = Path.GetFileNameWithoutExtension(filename);
            PdfDocument outputDocument = new PdfDocument();
         
            for (int idx = 0; idx < inputDocument.PageCount; idx++)
            {
                              
                if (splits.Contains(idx))
                {
                    
                   
                    outputDocument.Save(saveDirectory + fileName);
                    // Hier zou dan eigenlijk weer een nieuwe instantie aangemaakt moeten worden zoals
                    //   PdfDocument outputDocument = new PdfDocument();
                    // maar dat mag niet 
                    
                }
                else
                {
                
                    outputDocument.AddPage(inputDocument.Pages[idx]);

                }
            }
      }



Oh ik heb wel wat dingen geprobeerd maar dat werkt allemaal niet.

code:
1
2
3
4
outputDocument = null;
outputDocument.Dispose();
outputDocument.Close();
// etc.

In de class (PDFSharp) zit ook niet iets om de pages eruit te kunnen halen c.q. te clearen.

[ Voor 8% gewijzigd door Douweegbertje op 30-06-2015 14:16 ]


Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

euh.. gewoon een nieuw PdfDocument instantieren?

C#:
1
2
//regel 16:
outputDocument = new PdfDocument();

Acties:
  • 0 Henk 'm!

  • Big Womly
  • Registratie: Oktober 2007
  • Laatst online: 01-09 13:39

Big Womly

Live forever, or die trying

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        public void splitPDF(string filename)
        {
            
            PdfDocument inputDocument = PdfReader.Open(filename, PdfDocumentOpenMode.Import);
            string name = Path.GetFileNameWithoutExtension(filename);
            PdfDocument outputDocument = new PdfDocument();
         
            boolean allDone = false;
            for (int idx = 0; idx < inputDocument.PageCount && !allDone; idx++)
            {
                              
                if (splits.Contains(idx))
                {
                    
                   
                    outputDocument.Save(saveDirectory + fileName);
                    // Hier zou dan eigenlijk weer een nieuwe instantie aangemaakt moeten worden zoals
                    //   PdfDocument outputDocument = new PdfDocument();
                    // maar dat mag niet 
                   allDone = true;
                    
                }
                else
                {
                
                    outputDocument.AddPage(inputDocument.Pages[idx]);

                }
            }
      }


edit:
Oooh, de "mag niet" kwam door een syntax fout, niet door een bewuste keuze die je wou maken :)

[ Voor 18% gewijzigd door Big Womly op 30-06-2015 14:19 ]

When you talk to God it's called prayer, but when God talks to you it's called schizophrenia


Acties:
  • 0 Henk 'm!

  • Jogai
  • Registratie: Juni 2004
  • Laatst online: 00:08
EddoH schreef op dinsdag 30 juni 2015 @ 14:17:
euh.. gewoon een nieuw PdfDocument instantieren?

C#:
1
2
//regel 16:
outputDocument = new PdfDocument();
De variabele bestaat al, dus je mag hem niet opnieuw aanmaken. Dus zoals EddoH zegt moet het werken

[ Voor 53% gewijzigd door Jogai op 30-06-2015 14:19 . Reden: EddoH schreef de code mooier... ]

Klik hier om op linkedIn lid te worden van de Freelance Tweakers groep.


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 15-09 05:50

Douweegbertje

Wat kinderachtig.. godverdomme

Topicstarter
EddoH schreef op dinsdag 30 juni 2015 @ 14:17:
euh.. gewoon een nieuw PdfDocument instantieren?

C#:
1
2
//regel 16:
outputDocument = new PdfDocument();
jhaha ja ik wist dat ik een brainfart had.
Ik deed dus

code:
1
 PdfDocument outputDocument = new PdfDocument();


Thanks! :+

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

O, o, o, mallerd toch.
Laten we het maar op de 'warmte' houden :+

Acties:
  • 0 Henk 'm!

  • Viper®
  • Registratie: Februari 2001
  • Niet online
Overigens spring ik persoonlijk uit een loop d.m.v. break;
nu heb je namelijk een extra Boolean variabele om in principe hetzelfde te doen.

Acties:
  • 0 Henk 'm!

  • EddoH
  • Registratie: Maart 2009
  • Niet online

EddoH

Backpfeifengesicht

Viper® schreef op dinsdag 30 juni 2015 @ 14:25:
Overigens spring ik persoonlijk uit een loop d.m.v. break;
nu heb je namelijk een extra Boolean variabele om in principe hetzelfde te doen.
Nee, Big Womly heeft dat. De originele code van Douweegbertje niet.
Pagina: 1