vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Progressbar  
Autor: Fighter
Datum: 16.03.04 00:26

Hallo Leute

ich zerbreche mir seit Tagen den Kopf,
durchwühle sämtliche I-Seiten ...

Aber ich kriege einfach keine Fortschrittsanzeige in Echtzeit (für eine Datei
die kopiert wird) hin

Ich hatte schon das Thema mal angesprochen: http://www.vbarchiv.net/forum/id10_i5342t5342.html

Vielleicht gibt es ja mittlerweile jemanden, der das beherrscht.

Gruß Jan

Ich nutze Visual Basic 2005 Express Edition auf W2KP und XP

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: ModeratorDaveS (Moderator)
Datum: 16.03.04 09:40

Das Beispiel von vorher klappt auch wenn man die API richtig deklariert:
    Public Const PROGRESS_CANCEL = 1
    Public Const PROGRESS_CONTINUE = 0
    Public Const PROGRESS_QUIET = 3
    Public Const PROGRESS_STOP = 2
    Public Const COPY_FILE_FAIL_IF_EXISTS = &H1
    Public Const COPY_FILE_RESTARTABLE = &H2
 
    Public Declare Function CopyFileEx Lib "kernel32.dll" _
      Alias "CopyFileExA" ( _
      ByVal lpExistingFileName As String, _
      ByVal lpNewFileName As String, _
      ByVal lpProgressRoutine As Fortschritt, _
      ByVal lpData As Integer, _
      ByRef pbCancel As Integer, _
      ByVal dwCopyFlags As Integer) As Integer
 
    Public bCancel As Integer
 
    Public Delegate Function Fortschritt( _
       ByVal TotalFileSize As Long, _
       ByVal TotalBytesTransferred As Long, _
       ByVal StreamSize As Long, _
       ByVal StreamBytesTransferred As Long, _
       ByVal dwStreamNumber As Integer, _
       ByVal dwCallbackReason As Integer, _
       ByVal hSourceFile As Integer, _
       ByVal hDestinationFile As Integer, _
       ByVal lpData As Integer) As Integer
 
 
    ' Datei kopieren mit Fortschrittsanzeige
    Public Function Fortschrittsanzeige( _
      ByVal TotalFileSize As Long, _
      ByVal TotalBytesTransferred As Long, _
      ByVal StreamSize As Long, _
      ByVal StreamBytesTransferred As Long, _
      ByVal dwStreamNumber As Integer, _
      ByVal dwCallbackReason As Integer, _
      ByVal hSourceFile As Integer, _
      ByVal hDestinationFile As Integer, _
      ByVal lpData As Integer) As Integer
            pb1.Value = 100 * TotalBytesTransferred / TotalFileSize
            Return 0
    End Function
 
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles Button1.Click
        ' Datei kopieren
        Dim nResult As Integer = CopyFileEx("C:\Work Dev\VSNet" & _
          "Dev\Test\nwind.mdb", "C:\Work Dev\VSNet Dev\Temp\nwind.mdb", _
        AddressOf Fortschrittsanzeige, _
         0, _
        bCancel, _
        COPY_FILE_RESTARTABLE)
        If nResult = 0 Then
            nResult = Marshal.GetLastWin32Error()
        End If
    End Sub
(Muss aber eine ziemlich grosse Datei sein, um dass man "Fortschritt" sieht...)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: ModeratorFZelle (Moderator)
Datum: 16.03.04 09:56

Schau mal hier rein.
http://groups.google.de/groups?hl=de&lr=&ie=UTF-8&oe=UTF-8&selm=%23BmfqyyaCHA.1796%40tkmsftngp12
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: ModeratorDaveS (Moderator)
Datum: 16.03.04 10:00

Hast du denn kein Vertrauen, dass mein (fast identischer) Code auch läuft?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Danke  
Autor: Fighter
Datum: 16.03.04 10:22

Hat ein bißchen gedauert, aber nun funktioniert es.
Ich hatte den Max-Wert nicht auf 100 !

Nochmals herzlichen Dank dafür.

Gruß Jan

Ich nutze Visual Basic 2005 Express Edition auf W2KP und XP

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar 
Autor: ModeratorFZelle (Moderator)
Datum: 16.03.04 11:20

Schon, aber Dafür hätte ich ihn sehen müssen

Ich hatte mir die Frage angeschaut, nach der ( schon mal gefundenen ) Lösung
gesucht und dann gepostet.
In der Zwischenzeit hattest Du dann auch was gepostet.
Bin eben nicht so schnell
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: Fighter
Datum: 16.03.04 12:59

Eines habe ich noch:
nResult = Marshal.GetLastWin32Error()
Marshal will declariert werden.

Ich nehme mal an, dass er dort auch angibt, wenn die Festplatte z.B. voll ist.

Gruß Jan

Ich nutze Visual Basic 2005 Express Edition auf W2KP und XP

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

System.Runtime.InteropServices.Marshal.GetLastWin32Error() (oT) 
Autor: WaldiMaywood
Datum: 16.03.04 13:04

.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: ModeratorDaveS (Moderator)
Datum: 16.03.04 13:45

Diese Funktion liefert den letzen Windows Fehlercode, und das zeigt was schiefgegangen ist wenn CopyFileEx() fehschlägt, z.B. die Datei existiert nicht, du hast keinen Zugriff usw.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Codes ??? 
Autor: Fighter
Datum: 16.03.04 14:06

Gibt es irgendwo die Codes dazu ?

#112 => Festplatte voll

aber ich bekomme danach auch nResult = 3

Gruß Jan

Ich nutze Visual Basic 2005 Express Edition auf W2KP und XP

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Codes ??? 
Autor: ModeratorDaveS (Moderator)
Datum: 16.03.04 14:20

Findest du in MSDN unter "System Error Codes"
System Error Codes

The following table provides a list of system error codes. The values are defined in the WinError.h header file. They are returned by the GetLastError function when many functions fail. To retrieve the description text for the error in your application, use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag.

Code Description Name
3 The system cannot find the path specified. ERROR_PATH_NOT_FOUND
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: Muggledream
Datum: 16.03.04 14:49

Hallo,
der Code von DaveS läuft sehr gut. Danke dafür!
Jetzt möchte ich den aber noch ein wenig erweitern.

Ich möchte, das alle Dateien und Unterordner (und auch die Dateien in den Unterordnern) in ein anderes Verzeichnis kopiert werden (die Verzeichnisstrukturen müssen beibehalten werden!) . Dabei soll in Echtzeit die Progressbar ablaufen.

Hat da jemand ein Beispiel für mich?

Vielen Dank und Gruß
Muggledream
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: ModeratorDaveS (Moderator)
Datum: 16.03.04 15:01

Du kannst z.B. SHFileOperation() API benutzen, dann bekommst den üblichen Explorer Copy Dialog mit Fortschrittsanzeiger. Oder du musst eine Liste der Dateien generieren, die gesamtlänge berechnen, und deine Progressroutine entsprechend ausrichten nach übertragener Menge.

Ich gluabe Waldi hat schon Beiträge gepostet wie man eine rekursive Fileliste generiert, muss noch im Forum sein...
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: spike24
Datum: 16.03.04 15:04

hi

habe mal eine rekursive suche nach dateien geschrieben

alle dateien werden in einem globalen array abgelegt
wäre noch zu verändern aber ich glaube im ansatz könnte es passen

http://www.vbarchiv.net/forum/id10_i13852t9964.html
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: WaldiMaywood
Datum: 16.03.04 15:10

Du müsstest doch eigentlich nur alle Ordner und Dateien ermitteln (und vielleicht in Array speichern). Dies könntest du mit den IO Methoden machen. Bei diesem Code z.B. werden alle Dateien eines Ordners ermittelt:
http://www.vbarchiv.net/forum/id10_i13744t13738.html

Ordner kopieren kannst wie schon Dave meinte mit einer API, oder du schaust dir auch mal dies hier an:
http://www.vbarchiv.net/forum/read.php?f=10&i=12764&t=12683
Der Rest wäre ja das gleiche (wg. ProgressBar) ....

Steve
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Progressbar  
Autor: Muggledream
Datum: 16.03.04 15:57

Danke für den Tip. Funktioniert wunderbar.

Viele Grüße
Kai
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel