Kann Fehler nicht finden...

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
DrShrek
Beiträge: 1970
Registriert: 08.09.2004 00:59

Beitrag von DrShrek »

Kaeru Gaman hat geschrieben:... und ich weiß auch,
dass ich nicht immer schreiben sollte, was ich denke...
Gerade das aber macht es doch so interessant ;-)
Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

konnte mich nicht beherschen ;)

Code: Alles auswählen

NewList FileNames.s()
 
AddElement(FileNames())
 FileNames() = "C:\testdatei.txt"
 
Procedure OverWriteAndDelete(FileNames.s(),wdh.l)
 Protected Counter, b, a, FileSize
 If CountList(FileNames()) And wdh.l > 0
     ForEach FileNames()
      FileSize = FileSize(FileNames())
      If FileSize >= 1 : Counter + 1 ; Wenn du immer 2 Byte schreibst bringt eine Datei mit einem Byte nichts..
        Debug "Lösche Datei "+Str(Counter)+" von "+Str(CountList(FileNames()))+" ("+Str(FileSize)+") bytes..."
        If OpenFile(0, FileNames())
          For b = 0 To wdh Step 1
            For a = 0 To FileSize Step 2
              WriteWord(0, Random($FFFF))
              FlushFileBuffers(0)
            Next
            Debug b
            FlushFileBuffers(0)
            FileSeek(0,0)
          Next
          CloseFile(0)
          DeleteFile(FileNames())
        Else
          Debug  "ERROR: Es ist ein Fehler aufgetreten."
        EndIf
      Else
        Debug "Datei nicht gefunden!"
      EndIf
     Next
  Else
    Debug "Falsche Parameter!"   
  EndIf   
 EndProcedure
 
 OverWriteAndDelete(FileNames(),1000)
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Hm...Danke für den Code.
Allerdings wusste ich garnicht, dass es den Befehl OverWriteAndDelete gibt, sonst hätte ich dass ja viel einfacher machen können <)

Oder funktioniert OverWriteAndDelete anders als mein Prinzip? bzw. Wie sicher?

Ich werd den COde mal in multiselection umbauen (ist ja nur für eine Datei).

@ Kaeru Gaman:
Das mit den Gedanken kenn ich, aber wiegsagt, ich möchte ja eigentlic nur meinen alten löschcode des alten shredders in den neuen mit multiselection per NextSelectedFileName() einbauen und gerade dass hat nicht geklappt. Aber selbst der alte (wo alles noch mit Repeat...Until x = y statt For...Next ist), funktionierte nicht.
Auserdem musst du beachten, dass ich PureBasic jettz vieleicht ein knappes halbes Jahr kenne und du, wenn ich von deinem Anmeldedatum ausgehe schon mind. 4 Jahre... :wink:
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

@ DrNo
Oh oh.. ich glaube da muss einer noch eine Menge lernen...
1. Der Code ist für mehr als eine Datei ( AddElement(FileNames()) )
2. Das ist eine Procedure, weist du eigentlich was das ist? Sry wenn ich frage.
3. Das ist einfach dein Code funktionsfähig umgeschrieben. Daher nicht sicher, denn du weist ja nicht wo Windows gerade auf die Platte schreiben lässt.

Gruß Marv
PS: RTFM :mrgreen:
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

Deluxe0321 hat geschrieben:@ DrNo
Oh oh.. ich glaube da muss einer noch eine Menge lernen...
Wäre möglich... :lol:
Deluxe0321 hat geschrieben:1. Der Code ist für mehr als eine Datei ( AddElement(FileNames()) )
Das hab ich 10 mins nach dem post auch bemerkt dann... /:->
Deluxe0321 hat geschrieben: 2. Das ist eine Procedure, weist du eigentlich was das ist? Sry wenn ich frage.
Nein, nicht wirklich. rsbasic meinte sowas ist nicht zwingend notwendig. Du kannst es mir aber gerne erklären :allright:
Deluxe0321 hat geschrieben: PS: RTFM :mrgreen:
RTFM ?
man lernt nie aus...


gruß DrNo
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

DrNo hat geschrieben:RTFM ?
Bild

= read the f**king manual = lies das verdammte handbuch
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
DrNo
Beiträge: 202
Registriert: 09.05.2008 15:20
Wohnort: BW, Deutschland
Kontaktdaten:

Beitrag von DrNo »

English kann ich auch :lol: Danke für den Hinweis...
Französisch kann ich auch
Latein kann ich auch

Wie ist das jetzt mit OverWriteAndDelete() ?
Ist das sicherer wie meine Methode/das gleiche vom Prinzip her?
Steht nicht im f***ing manual!


//Ehm vergesst es was schwätz ich da für ein scheiss^^ :wink:
:iamwithstupid:
Benutzeravatar
Deluxe0321
Beiträge: 336
Registriert: 19.05.2006 00:31
Kontaktdaten:

Beitrag von Deluxe0321 »

Eine Procedure ist ein Programmteil, welcher unabhängig vom Hauptcode innerhalb des Programms ist und seine eigenen Parameter und haben kann. In PureBasic wird bei Prozeduren die Rekursion voll unterstützt, jede Prozedur kann sich auch selbst aufrufen. Die Variablen innerhalb der Prozedur erhalten bei jedem Aufruf der Prozedur standardmäßig den Wert 0 (null). Um auf Variablen des Hauptprogramms zugreifen zu können, müssen diese mit der Prozedur "geteilt" (shared) werden. Dies ist mit den Shared oder Global Schlüsselworten möglich (siehe auch die Protected und Static Schlüsselwörter).
Kurzum: Proceduren erleichtern dir die arbeit, da du diese nur einmal schreiben musst und dein Programm diese dann an deinen bestimmten Stellen aufruft. Was bedeutet das gleichzeitig? Die Übersicht in deinem Programm wird um einiges gesteigert.
Als bsp: (passt in deinen Code)

Code: Alles auswählen

If EventGadget() = 7
  OverWriteAndDelete(FileNames(),GetGadgetState(4))
EndIf 
Jetzt schau dir mal deinen Code auf der ersten Seite an.. Ziemlich entschlackt oder?
----

So, das zum Thema RTFM, wie es Kaeru schon erklärt hat :mrgreen:
Arbeite dich mal durch die Tutorials; gibts ne Menge und da du ja Französisch, Englisch UND sogar Latein kannst sollte es garkein Thema sein etwas zu finden. :wink:

Gruß Marv
Antworten