Seite 2 von 3

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 10.07.2011 21:37
von HeX0R
twa hat geschrieben: 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.
Naja, wenn du CreateFile in der Hilfe nachliest, steht dort genau, wie du das "verschachteln" musst.
Ist doch ein für dich perfektes Beispiel dabei.

[Edit]
Immer diese Fieselschweiflinge hier...

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 10.07.2011 21:39
von RSBasic
Ich hab eine neue Prozedur hinzugefügt (WriteNewLogLine()):

Code: Alles auswählen

EnableExplicit

Define EventID
Define.s Source
Define.s Destination

Global LogFilePath.s = "C:\Log.txt"

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

Procedure WriteNewLogLine(Source.s, Destination.s)
  If OpenFile(0, LogFilePath)
    FileSeek(0, Lof(0))
    WriteStringN(0, Source + " wurde verschoben nach " + Destination)
   
    CloseFile(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)
  
  UpdateLists()

  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 4
          Source = GetGadgetText(0) + GetGadgetText(6)
          Destination = GetGadgetText(1) + GetGadgetText(6)
          If RenameFile(Source, Destination)
            MessageRequester("Info","Folgende Datei wurde verschoben: "+GetGadgetText(6),0)
            WriteNewLogLine(Source, Destination)
          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)
            WriteNewLogLine(Source, Destination)
          Else
            MessageRequester("Fehlermeldung","Die Datei kann nicht verschoben werden!")
          EndIf
         
          UpdateLists()
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf
\\Edit:
CheckLogFile() entfernt.

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 10.07.2011 23:01
von ts-soft
@RSBasic
CheckLogFile() ist aber vollkommen überflüssig! OpenFile erstellt nicht existierende Dateien!

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 10.07.2011 23:05
von RSBasic
Oh ja, stimmt, danke.

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 10.07.2011 23:11
von GPI

Code: Alles auswählen

Procedure WriteNewLogLine(Source.s, Destination.s)
  If OpenFile(0, LogFilePath)
    FileSeek(0, Lof(0))
    WriteStringN(0, Source + " wurde verschoben nach " + Destination)
   
    CloseFile(0)
  EndIf

EndProcedure
Das erinnert mich an die eine Maschine in der Arbeit - die inspziert automatisch eine Leiterplatte und macht von jeden Bauteil Bilder und bewertet diese nach bestimmten Regeln. Alle Fail-BG werden dann in einer res-Datei zusammengefasst und die Bilder werden exakt so gespeichert. Leider gottes ist da der Virenscanner auf Paranoia eingestellt, so das bei jeden Zugriff dieser Datei die Datei nochmals gescannt wird. Ergebnis: wenn mal so 300-400 Bilder zusammenkommen, dann wartet man grob 20-30 Minuten nur auf den Virenscanner ;) - sollte man bei sowas immer in Kopf haben - sobald die Datei größer wird, kann es das System gewaltig ausbremsen.

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 11.07.2011 07:04
von twa
Guten Morgen,

kann man so die aktuelle Uhrzeit und das entsprechende Datum einfügen.
Habe momentan PureBasic nicht zur Hand aber ich vermute mal das ist falsch:

Code: Alles auswählen

WriteStringN(0, Source + " wurde verschoben nach " + Destination + FormatDate(Date(), "%dd.%mm.%yyyy %hh:%ii:%ss"))

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 11.07.2011 08:29
von ts-soft
twa hat geschrieben:Habe momentan PureBasic nicht zur Hand aber ich vermute mal das ist falsch:
Die Reihenfolge der beiden Parameter von FormatDate ändern und schon schwuppt es.
Aber einen Leerstring " " vor dem Datum macht das ganze leserlicher :wink:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 11.07.2011 09:55
von twa
Mmmmh funzt nicht habe ich ne Schreibfehler???

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 11.07.2011 10:04
von ts-soft

Code: Alles auswählen

Procedure WriteNewLogLine(Source.s, Destination.s)
  If OpenFile(0, LogFilePath)
    FileSeek(0, Lof(0))
    WriteStringN(0, Source + " wurde verschoben nach " + Destination + " " + FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", Date())) 
    CloseFile(0)
  EndIf

EndProcedure
Funktioniert bei mir problemlos, lediglich den Pfad habe ich angepasst, da ich auf C:\ keine Schreibrechte habe.

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Verfasst: 11.07.2011 21:21
von twa
Hallo,

@ts-soft / Dankeschön!!!..... habe mal wieder nicht richtig gelesen und nicht aufgepasst :|

Wiederholt sich bestimmt!!!

nun möchte ein Bild einfügen, was auch zum Teil funktioniert.
Aber sobald ich z.B. den Pfad ändere funktioniert dies leider nicht mehr siehe:

Code: Alles auswählen

ImageGadget     (10, 0, 0, 381, 68, LoadImage(0, #PB_Compiler_Home + "Examples\Sources\Data\PureBasicLogo.bmp"))
:allright:

Code: Alles auswählen

ImageGadget     (10, 0, 0, 381, 68, LoadImage(0,"C:\test.jpg"))
:(




Seh vor lauter Wald keine Bäume mehr...........................

Hier das gesamte Script nochmal:



Code: Alles auswählen

EnableExplicit

Define EventID
Define.s Source
Define.s Destination

Global LogFilePath.s = "C:\Log.txt"

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

Procedure WriteNewLogLine(Source.s, Destination.s)
  If OpenFile(0, LogFilePath)
    FileSeek(0, Lof(0))
    WriteStringN(0, Source + " wurde verschoben nach " + Destination + "|" + FormatDate("%dd.%mm.%yyyy %hh:%ii:%ss", Date()))
    CloseFile(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")
  ButtonGadget    (9, 370,350, 200, 24, "Log-Datei")
  ListViewGadget  (6,  10, 40, 350, 450)
  ListViewGadget  (7, 580, 40, 350, 450)
  TextGadget      (8, 370,300, 190,  15,"This text is colored")
  
  
  UpdateLists()

  Repeat
    EventID=WaitWindowEvent()
    If EventID=#PB_Event_Gadget
      Select EventGadget()
        Case 4
          Source = GetGadgetText(0) + GetGadgetText(6)
          Destination = GetGadgetText(1) + GetGadgetText(6)
          If RenameFile(Source, Destination)
            MessageRequester("Info","Folgende Datei wurde verschoben: "+GetGadgetText(6),0)
            WriteNewLogLine(Source, Destination)
          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)
            WriteNewLogLine(Source, Destination)
          Else
            MessageRequester("Fehlermeldung","Die Datei kann nicht verschoben werden!")
          EndIf
         
          UpdateLists()
        Case 9 
          If FileSize ("C:\Log.txt") > -1 ;
             RunProgram("notepad.exe", "C:\Log.txt", "")
          Else
            MessageRequester("Fehlermeldung","Die Datei: Log.txt ist nicht vorhanden!")
          EndIf 
      EndSelect
    EndIf
    If EventID = #PB_Event_CloseWindow
      End
    EndIf
  ForEver
EndIf