login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Als het bestand al bestaat, word 1 2, 2 3 etc.

Offline roberini - 03/02/2009 20:28 (laatste wijziging 03/02/2009 20:55)
Avatar van roberiniHTML beginner Ik zit hier met een vraag. Ik wil graag weten of dit mogelijk is. Ik wil het ook wel googlen, maar ik zou niet weten waarop. Ik weet al hoe je kan kijken hoe het bestand bestaat, maar dan wil ik dit erna doen. Als het bestand al bestaat, dat hij het nummer(in mijn geval de naam van het bestand) dan met 1 verhoogt, totdat het bestand niet meer bestaat. In andere woorden. De standaard naam waarmee hij word opgeslagen, is plaatje1. Maar als plaatje1 al bestaat, moet hij plaatje2 proberen. Nee ik wil niet 1000en if else end if sessies gaan aanmaken, dat is niet goed voor mijn geheugen:P Maar ik wil gewoon dat hij het laatste nummer telkens veranderd totdat het kan. Dus als plaatje 1 t/m plaatje 12 bezet is, wil ik dat hij plaatje 13 maakt. Is dit mogelijk?

Zo ja, wil ik graag horen hoe:)

Zo nee, kan ik het dan op een andere manier wel doen?

6 antwoorden

Gesponsorde links
Offline Abbas - 03/02/2009 21:11
Avatar van Abbas Gouden medaille

Crew .NET
Zet volgende code in je FormLoad bijvoorbeeld, deze code geldt ook alleen als de bestanden in volgorde op nummer staan:

  1. 'Bestandslocatie
  2. Dim path As String = "C:\LocatieVanMapMetPlaatjes"
  3. Dim di As New DirectoryInfo(path)
  4. 'Laatste bestand kiezen
  5. 'Normaal hetgeen met het hoogste nummer
  6. Dim f As FileInfo = di.GetFiles().Last()
  7. 'Nieuw bestand maken met laatste nummer
  8. Dim nieuwBestand As ... = "Plaatje" & ExtractNumber(f.Name)

En hier is de functie "ExtractNumber", ik ga er wel vanuit dat buiten dat nummer waar je op zoekt, nergens anders nog een getal in de bestandsnaam voorkomt.

  1. 'Functie om het nummer uit de bestandsnaam te halen
  2. Private Shared Function ExtractNumber(ByVal fileName As String) As Integer
  3.  
  4. Dim strReturn As String = ""
  5. For Each c As Char In fileName
  6. If (IsNumeric(c)) Then
  7. strReturn &= c.ToString()
  8. End If
  9. Next
  10. Return Convert.ToInt32(strReturn)
  11.  
  12. End Function
Offline roberini - 03/02/2009 21:18
Avatar van roberini HTML beginner
  1. Dim nieuwBestand As ...


Als wat moet it die dim doen?(sorry, best wel domme vraag, maar niet alles met gegevenstypen is blijven steken )
Offline Abbas - 03/02/2009 21:19 (laatste wijziging 03/02/2009 21:22)
Avatar van Abbas Gouden medaille

Crew .NET
"Image" bijvoorbeeld, enkel dan nog doen:

  1. Imports System.Drawing

Zo wordt het dan wel:

  1. Dim nieuwBestand As Image
  2. nieuwBestand.Save("Plaatje" & ExtractNumber(f.Name))


Offline roberini - 03/02/2009 21:35 (laatste wijziging 03/02/2009 21:38)
Avatar van roberini HTML beginner Thanks, dat heeft helemaal gewerkt, maar nu krijg ik ineens deze foutmelding. hoe los ik dit op?

A first chance exception of type 'System.InvalidOperationException' occurred in System.Core.dll

En dan markeert ie dit geel

  1. f As FileInfo = di.GetFiles().Last()


Ik heb een vermoeden waardoor het komt. Ik heb het fotomaken en opslaan in een timer, omdat ik wil dat hij elke minuut een prt scrn maakt en opslaat. Maar hij wil hem niet opslaan, want als ik de interval op 1000 heb, komt het na 1 seconde, heb ik hem op 10000 komt het na 10 sec
Offline Abbas - 03/02/2009 21:36
Avatar van Abbas Gouden medaille

Crew .NET
Zet die regel dan eens binnen een try-catch en dan binnen je catch geef je de Message van de Exception weer.
Offline Mario - 04/02/2009 07:32 (laatste wijziging 04/02/2009 07:46)
Avatar van Mario Crew algemeen Roberini,

Waarom niet gewoon je file opslaan in formaat Y-M-D-h-m-s (oftewel jaar-maand-dag-uur-minuut-seconde)
Je filenaam zou dan 20090204072712.jpg heten. Een minuuut later 20090204072813.jpg etc...

Op deze manier heb je altijd een unieke naam per foto die je ook nog op filenaam kunt sorteren.

Dit is meestal de manier waarop men logfiles wegschrijft en is eigenlijk ook voor jouw probleem van toepassing.

Lijkt me handiger,overzichtelijker en makkelijker te coderen.
Het staat natuurlijk vrij welke oplossing jij het makkelijkste vind  

EDIT : Hiermee de code om de filenaam te genereren

  1. Dim mFilenaam As String = Format(Now, "yyyyMMddHHmmss") & ".jpg"
  2. MessageBox.Show(mFilenaam)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.225s