Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[VB.NET] File renamen > inpakken d.m.v winrar, probleempje.

Pagina: 1
Acties:
  • 664 views sinds 30-01-2008
  • Reageer

  • Dnc1n
  • Registratie: Juli 2001
  • Laatst online: 18-11 22:42
Ik heb een visual basic code waarbij een filenaam eerst gerenamed worden, en vervolgens en vervolgens ingepakt wordt d.m.v. winrar.
Het ziet er als volgd uit>

code:
1
2
3
My.Computer.FileSystem.RenameFile(file1, file2)
MainForm.tbTargetPath.Text = file2
MainForm.rar()


en dan vervolgens het de functie voor het rarren:

code:
1
2
3
4
5
6
7
8
9
10
11
    Public Sub rar()
        Dim rar As New ProcessWrapper
        Dim rarpath As String
        ProcessForm.ProcessWrapper = rar
        rarpath = Filepath.GetDir(tbTargetPath.Text) + Filepath.GetNameNoExt(tbTargetPath.Text)
        rar.File = "cmd.exe"
        rar.Arguments = """/C """"" & Application.StartupPath & "\applications\rar\rar.exe"" a -m0 -v15000000b -vn -ep1 """ & rarpath & ".rar"" """ & tbTargetPath.Text & """"""""
        rar.Minimized = s.RunAppsMinimized.Value
        rar.Wait = True
        rar.Start()
    End Sub


Het probleem is echter dat het inpakken al begint voordat de file goed gerenamed is,
ik krijg hierdoor dus een corrupt rar archive.
als ik dit doe:

code:
1
2
3
4
My.Computer.FileSystem.RenameFile(file1, file2)
MainForm.tbTargetPath.Text = file2
MessageBox.Show("even wachten")
MainForm.rar()


gaat het wel goed omdat hij dan even pauzeert tot ik op ok klinkt, is natuurlijk geen oplossing, ik zou dus willen dat hij pas naar de rar() functie gaat als hij klaar is met renamen.

Weet iemand daar een oplossing voor?

[ Voor 3% gewijzigd door Dnc1n op 02-11-2007 21:55 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Toch lijkt het me stug dat het daar fout gaat...

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
Sub Main()
     Dim file1 As String = "foo.txt"
     Dim file2 As String = "bar.txt"

     For t As Integer = 1 To 10
        My.Computer.FileSystem.RenameFile("c:\" & file1, file2)
        My.Computer.FileSystem.RenameFile("c:\" & file2, file1)
     Next
End Sub

Heen en terug renamen, 10x. En zonder foutmeldingen. Ik weet niet wat dat rar-gebeuren doet of wat je daarvoor gebruikt, maar het lijkt me stug dat het probleem in het renamen zelf zit; dat zou immers ook een exceptie gooien als de vorige rename nog niet klaar zou zijn (stel dat het ASync zou worden uitgevoerd). Je kunt eventueel nog een file.move proberen (Imports system.io); dat is hetzelfde als een rename zolang het pad hetzelfde is. Ik heb geen idee wat die RenameFile intern nog doet, maar het lijkt me sterk dat het iets anders zou zijn dan file.move.

[edit]
Ik heb het effe gechecked, maar er wordt intern inderdaad een file.move aangeroepen door RenameFile.

[ Voor 21% gewijzigd door RobIII op 02-11-2007 23:15 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Dnc1n
  • Registratie: Juli 2001
  • Laatst online: 18-11 22:42
ik ben er uit :p
ipv. de cmd.exe aan te spreken heb ik direct rar.exe aangesproken met de benodigde argumenten, geen corrupte archieven meer na renamen.
raar maar waar :p

  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 31-10 11:58
Is RAR een vereiste? Kan je anders niet beter de SharpZipLib gebruiken zoals in dit topic aangehaald?

Anders ben je afhankelijk dat rar geïnstalleerd is, aan het path toegevoegd of op een bepaalde locatie staat of je moet zelf de rar.exe meeleveren...

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack


  • BestTested!
  • Registratie: Oktober 2003
  • Laatst online: 13:09
riezebosch schreef op zaterdag 03 november 2007 @ 09:33:
Is RAR een vereiste? Kan je anders niet beter de SharpZipLib gebruiken zoals in dit topic aangehaald?

Anders ben je afhankelijk dat rar geïnstalleerd is, aan het path toegevoegd of op een bepaalde locatie staat of je moet zelf de rar.exe meeleveren...
En ik weet niet of ze daar zo blij mee zijn bij RarLab. Er zijn genoeg open-source compressie programma's te vinden die je kan gebruiken. En als je applicatie windows-only is, kan je ook nog altijd de commando's makeCab of zip gebruiken :)

  • kmf
  • Registratie: November 2000
  • Niet online

kmf

Als je iets moet inpakken kan je idd beter een bestaande compressie-library gebruiken. bv 7zip?

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


  • Dnc1n
  • Registratie: Juli 2001
  • Laatst online: 18-11 22:42
Mjah het moet rar zijn wil het namelijk in meerdere files verdelen (en ook graag rar), de rar applicatie zit bij de applicatiedirectory in dus das niet zo'n probleem.
Het is verder ook niet voor commercieel gebruik :p

edit:
7zip heb ik nog niet bekeken, ik zal er eens naar kijken, een library is wel wat directer als een externe applicatie aanspreken idd.

[ Voor 28% gewijzigd door Dnc1n op 03-11-2007 16:19 ]

Pagina: 1