Blutiger Anfänger Verzeichnis anzeigen - Copy File

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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...
Zuletzt geändert von HeX0R am 10.07.2011 21:42, insgesamt 1-mal geändert.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag von ts-soft »

@RSBasic
CheckLogFile() ist aber vollkommen überflüssig! OpenFile erstellt nicht existierende Dateien!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag von RSBasic »

Oh ja, stimmt, danke.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
twa
Beiträge: 8
Registriert: 04.07.2011 14:47

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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"))
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
twa
Beiträge: 8
Registriert: 04.07.2011 14:47

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag von twa »

Mmmmh funzt nicht habe ich ne Schreibfehler???
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
twa
Beiträge: 8
Registriert: 04.07.2011 14:47

Re: Blutiger Anfänger Verzeichnis anzeigen - Copy File

Beitrag 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
Antworten