Seite 1 von 3

Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 16:04
von twa
Hallo in die Runde,

da ich blutiger Anfänger bin und überhaupt noch keine Ahnung im Bereich "Pure Basic" habe stehe ich vor einem kleinen Problem.
Ich möchte ein kleines Tool bauen was Dateien von einem vorgeschriebenen Verzeichnis zum anderen Verzeichnis verschiebt.
copyFile??? moveFile???

Der User wählt die entsprechenden Dateien (List1 oder List2) aus (eine oder mehrere) und betätigt dann den entsprechenden Button "Datei verschieben"!
Auch das Anzeigen von Dateien für das List2 Fenster habe ich noch nicht hin bekommen.
Besteht eigentlich die Möglichkeit die Verzeichnisse direkt zuzuweisen (also ohne StringGadget).
Habe mehrere Dinge probiert leider ohne Erfolg.

Vielleicht könntet ihr mir ein paar Hilfestellungen geben?
Ich würde mich über Anregungen, Tipps und der gleichen freuen um PureBasic besser zu beherrschen und zu erlernen.
Leider bringt die Hilfe manchmal nicht viel oder es fehlt vielleicht auch bei mir einfach das Grundverständnis der Programmierung.
Jeder hat mal angefangen....... :roll:
Wenn ihr Tipps, Links Dokumentationen habt immer her damit..... :D

Ein Frage brennt mir doch noch unter den Nägeln, ist PureBasic die richtige Wahl als Anfänger oder kommt mit xprofan, visual basic etc.... weiter????
Ich weiß wie "Oft" wurde diese Frage schon gestellt, aber bevor man beginnt und vielleicht den falschen Weg einschlägt muss man dies doch nochmal bedenken.

Soooo..... Ich freue mich auf Rückantworten jeglicher Art und bedanke mich vorab die meinen Beitrag lesen und was dazu schreiben.

Vielen Dank!!!

Ach so der Code:

Code: Alles auswählen

If OpenWindow(0, 100, 200, 1200, 500, "ControlCenter")

  StringGadget    (0,  10, 10, 350, 24, GetPathPart("C:\Windows\"))
  StringGadget    (1, 580, 10, 350, 24, GetPathPart("D:\")) 
  ButtonGadget    (2, 370, 10, 200, 24, "Dateien anzeigen List1")
  ButtonGadget    (3, 950, 10, 200, 24, "Dateien anzeigen List2")
  ButtonGadget    (4, 370,250, 200, 24, "Datei verschieben ->")
  ButtonGadget    (5, 370,200, 200, 24, "<- Datei verschieben")
  ListViewGadget  (6,  10, 40, 350, 450)
  ListViewGadget  (7, 580, 40, 350, 450) 
  
  Repeat
    EventID = WaitWindowEvent()

    If EventID = #PB_Event_Gadget
      If EventGadget() = (2) 
              ClearGadgetItems(6)  
          If ExamineDirectory(0, GetGadgetText(0), "*.txt*")
            While NextDirectoryEntry(0)
                FileName$ = DirectoryEntryName(0)
            If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
              FileName$ = "[DIR] "+FileName$
            EndIf
            AddGadgetItem(6, -1, FileName$)
          Wend
            Else
          MessageRequester("Fehler","Kein Zugriff auf folgendes Verzeichnis: "+GetGadgetText(0),0)
        EndIf
      EndIf
    EndIf
  Until EventID = #PB_Event_CloseWindow
EndIf 

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 16:10
von RSBasic
Wenn du ein ganzes Verzeichnis (inklusive Dateien) kopieren möchtest:

Code: Alles auswählen

Ergebnis = CopyDirectory(AusgangsVerzeichnis$, ZielVerzeichnis$, Pattern$ [, Modus])
Wenn du aber nur eine einzelne Datei kopieren möchtest:

Code: Alles auswählen

Ergebnis = CopyFile(Ausgangsdatei$, Zieldatei$)
twa hat geschrieben:Ein Frage brennt mir doch noch unter den Nägeln, ist PureBasic die richtige Wahl als Anfänger
Definitiv. :wink:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 16:16
von ts-soft
Und RenameFile() entspricht einem Move (nur anderes Verzeichnis angeben).

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 16:18
von RSBasic
Und fürs Auflisten der Dateien und Verzeichnissen:

Code: Alles auswählen

EnableExplicit

Define EventID

If OpenWindow(0, 0, 0, 1200, 500, "ControlCenter",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget    (0,  10, 10, 350, 24, GetPathPart("C:\Windows\"))
  StringGadget    (1, 580, 10, 350, 24, GetPathPart("D:\"))
  ButtonGadget    (2, 370, 10, 200, 24, "Dateien anzeigen List1")
  ButtonGadget    (3, 950, 10, 200, 24, "Dateien anzeigen List2")
  ButtonGadget    (4, 370,250, 200, 24, "Datei verschieben ->")
  ButtonGadget    (5, 370,200, 200, 24, "<- Datei verschieben")
  ListViewGadget  (6,  10, 40, 350, 450)
  ListViewGadget  (7, 580, 40, 350, 450)
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 2
          ClearGadgetItems(6)
          If ExamineDirectory(0, GetGadgetText(0), "*.*")  
            While NextDirectoryEntry(0)
              If DirectoryEntryType(0) = #PB_DirectoryEntry_File
                AddGadgetItem(6, -1, DirectoryEntryName(0))
              Else
                AddGadgetItem(6, -1, DirectoryEntryName(0)+"\")
              EndIf
            Wend
            FinishDirectory(0)
          EndIf
        Case 3
          ClearGadgetItems(7)
          If ExamineDirectory(0, GetGadgetText(1), "*.*")  
            While NextDirectoryEntry(0)
              If DirectoryEntryType(0) = #PB_DirectoryEntry_File
                AddGadgetItem(7, -1, DirectoryEntryName(0))
              Else
                AddGadgetItem(7, -1, DirectoryEntryName(0)+"\")
              EndIf
            Wend
            FinishDirectory(0)
          EndIf
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 16:39
von twa
Wahnssinnnnn , das geht hier ja rasend schnelllllllll :allright:
Jetzt muss ich nur noch irgendwie RenameFile einbauen mit der Funktion (Auswahl der entsprechenden Files)!!!

Sch.ei...wie geht das :|

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 16:55
von RSBasic
twa hat geschrieben:Sch.ei...wie geht das :|
Schau mal in der Hilfe unter "RenameFile()", da ist alles ausführlich mit Beispielcodes beschrieben.

Erstell einfach mal eine Testdatei namens "Test.txt" auf C:\ (Beispiel).
Anschließend führe den folgenden Code aus, um deine erstellte Datei nach D:\ zu verschieben:

Code: Alles auswählen

If RenameFile("C:\Test.txt", "D:\Test.txt")   
  Debug "Verschieben und Umbenennen erfolgreich."
Else 
  Debug "Verschieben und Umbenennen fehlgeschlagen."
EndIf

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 17:41
von twa
RSBasic hat geschrieben:
twa hat geschrieben:Sch.ei...wie geht das :|
Schau mal in der Hilfe unter "RenameFile()", da ist alles ausführlich mit Beispielcodes beschrieben.

Erstell einfach mal eine Testdatei namens "Test.txt" auf C:\ (Beispiel).
Anschließend führe den folgenden Code aus, um deine erstellte Datei nach D:\ zu verschieben:

Code: Alles auswählen

If RenameFile("C:\Test.txt", "D:\Test.txt")   
  Debug "Verschieben und Umbenennen erfolgreich."
Else 
  Debug "Verschieben und Umbenennen fehlgeschlagen."
EndIf
Vielen Dank.........

Hat super geklappt......zumindest der Test!!!

Wie kann ich dies aber variabel benennen mit * oder $ (ausgewählte Datei)???

Der User wählt eine beliebige Datei whatever aus (List1 C:\) und und will sie dann Richtung (List2 D:\) verschieben
Der Button soll die Funktion haben nimm das entsprechende Datei (ausgewählt vom User) und durch die Betätigung verschiebe das File Richtung D:\.....

Der oben genannte Befehl ist festgelegt für die Test.txt Oder???

Dankeschön!!!

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 17:58
von ts-soft
Grob gesagt geht es ungefähr so:

Code: Alles auswählen

Define.s Source, Destination
Source = GetGadgetText(#ListView1)
Destination = GetGadgetText(#ListView2) + GetFilePart(Source)
If RenameFile(Source, Destination)   
  Debug "Verschieben und Umbenennen erfolgreich."
Else
  Debug "Verschieben und Umbenennen fehlgeschlagen."
EndIf
Jetzt solltest Du Dir aber unter Nutzung der Hilfe weiterarbeiten können.
Bei weiteren Fragen, Fragen aber bitte erstmal selbst versuchen, nicht das
wir Dir hier eine vollständige Anwendung schreiben :wink:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 04.07.2011 17:59
von RSBasic
Wenn du eine Variable als Zeichenkette (String) definieren möchtest, dann entweder:

Code: Alles auswählen

Define DeinString.s
oder:

Code: Alles auswählen

Define DeinString$
Wie du dein String benennst, ist deine Entscheidung. Wichtig ist nur, dass dein String für dich verständlich ist (wie z.B. SelectedFile$) und dass dein Stringname am Ende entweder .s oder $ enthält.

Wenn du aus deiner ListView-Liste den markierten Eintrag ermitteln möchtest, kannst du etwa so machen:

Code: Alles auswählen

SelectedFile$ = GetGadgetText(6)
Mit Hilfe von SelectedFile$ weißt du, welche Datei kopiert/verschoben werden soll und du kannst somit darauf reagieren.

Aber das steht sowieso alles in der Hilfe. Siehe "ListViewGadget". Einfach mal durchlesen. ;)

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 10.07.2011 21:23
von twa
Hallo nochmal,

erstmal sehr großes Lob RSBASIC und ts-soft für die tolle Unterstützung. Wie man sieht bin ich weiterhin Anfänger und probiere mich gerade in allen Dingen einzuarbeiten.
Ich weiß, dass ihr nicht meine kleine Anwendung schreiben sollt, nun bin ich kurz vor dem Ende dieser Applikation und habe doch noch ein paar Fragen.
Dazu muss ich sagen ohne der Hilfe von RSBASIC wäre ich niemals soweit nochmals Dankeschön.
Natürlich gehört rs-soft dazu :-).
Kann dies nicht oft genug sagen.

Jetzt zu meiner Problematik na ja wenn man dies als Problematik ansehen kann....... ich möchte das die entsprechenden verschobenen Dateien in einem Logfile rein geschrieben werden bzw. protokolliert werden.
Nun sagen mir die Parameter createfile und writestringN schon was, aber wie es so als Anfänger ist weiß ich nicht wie ich dies verschachteln soll.
Des Weiteren würde ich gerne ein Button einbauen in dem die Log-Datei eingesehen werden können, dass dies auch für den User ersichtlich ist und vor allem legitim für den User aussieht.

Nun der entsprechenden Code:

Code: Alles auswählen

EnableExplicit

Define EventID
Define.s Source
Define.s Destination

Procedure UpdateLists()
  ClearGadgetItems(6)
  If ExamineDirectory(0, GetGadgetText(0), "*.dat*")
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        AddGadgetItem(6, -1, DirectoryEntryName(0))
      Else
        AddGadgetItem(6, -1, DirectoryEntryName(0)+"\")
      EndIf
    Wend
    FinishDirectory(0)
  EndIf
  
  ClearGadgetItems(7)
  If ExamineDirectory(0, GetGadgetText(1), "*.dat*")
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        AddGadgetItem(7, -1, DirectoryEntryName(0))
      Else
        AddGadgetItem(7, -1, DirectoryEntryName(0)+"\")
      EndIf
    Wend
    FinishDirectory(0)
  EndIf
  
EndProcedure

If OpenWindow(0, 0, 0, 1200, 500, "ControlCenter",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  StringGadget    (0,  10, 10, 350, 24, GetPathPart("C:\Test1\"))
  StringGadget    (1, 580, 10, 350, 24, GetPathPart("C:\Test2\"))
  
  ;Das brauchst du eigentlich nicht mehr
  ;ButtonGadget    (2, 370, 10, 200, 24, "Dateien anzeigen List1")
  ;ButtonGadget    (3, 950, 10, 200, 24, "Dateien anzeigen List2")
  
  ButtonGadget    (4, 370,200, 200, 24, "Datei verschieben >>>>")
  ButtonGadget    (5, 370,250, 200, 24, "<<<< Datei verschieben")
  ListViewGadget  (6,  10, 40, 350, 450)
  ListViewGadget  (7, 580, 40, 350, 450)
  CreateFile      (8,"C:\Log.txt")
  
  UpdateLists()
  
  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 4
          Source = GetGadgetText(0) + GetGadgetText(6) + WriteStringN(0,6)
          Destination = GetGadgetText(1) + GetGadgetText(6)
          If RenameFile(Source, Destination)
            MessageRequester("Info","Folgende Datei wurde verschoben: "+GetGadgetText(6),0)
          Else
            MessageRequester("Fehlermeldung","Die Datei kann nicht verschoben werden!")
          EndIf
          
          UpdateLists()
        Case 5
          Source = GetGadgetText(1) + GetGadgetText(7)
          Destination = GetGadgetText(0) + GetGadgetText(7)
          If RenameFile(Source, Destination) 
            MessageRequester("Info","Folgende Datei wurde verschoben: "+GetGadgetText(7),0)
          Else
            MessageRequester("Fehlermeldung","Die Datei kann nicht verschoben werden!")
          EndIf
          
          UpdateLists()
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
Vielen Dank für alle die mich unterstützen wollen!!!
Einen schönen Sonntag wünsch ich in die Runde!!!