COPY und RENAME streiken

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • COPY und RENAME streiken

      Mit folgendem Problem ärgere ich mich im Moment rum:
      Der XProfan-Befehl COPY und RENAME verweigern die Ausführung ohne Fehlermeldung, wenn die Datei, die bearbeitet werden soll, freie Stellen im Namen hat.
      Beispiel:

      Das ist ein Test.txt

      Auch Versuche mit Translate$ mit CHR$(160) oder CHR$(32) schlagen fehl.
      Wie kann ich in XProfan hier eine Lösung bekommen ?

      Danke für einen Lösungsvorschlag
    • Quellcode

      1. Def @SHFileOperation(1) !"SHELL32","SHFileOperationA"
      2. Proc Fileaction
      3. Parameters Action$,File$,File2$,noconfirm%,norecycle%
      4. Parameter 1: Auszuführende Aktion=COPY, DELETE, RENAME, MOVE
      5. Parameter 2: Quelldatei
      6. Parameter 3: Zielldatei
      7. Parameter 4: 0 = User erst fragen, 1= ohne Nachfrage löschen
      8. Parameter 5: 0 = In Papierkorb verschieben, 1= "endgültig" löschen
      9. Declare FOF_Flag%,Action&,DO%,Fehler&
      10. Declare opstruct#,file#,file2#
      11. LET DO%=0
      12. IF @upper$(Action$)="RENAME"
      13. Let Action&=4
      14. elseIF @upper$(Action$)="COPY"
      15. Let Action&=2
      16. elseIF @upper$(Action$)="MOVE"
      17. Let Action&=1
      18. elseIF @upper$(Action$)="DELETE"
      19. Let Action&=3
      20. else
      21. @messagebox("Diese Funktion ist nicht bekannt!","Aktion wird nicht ausgeführt!",64)
      22. LEt DO%=1
      23. endif
      24. IF DO%=0
      25. Case noconfirm% : Let noconfirm%=16
      26. CaseNot norecycle% : Let norecycle%=64
      27. Let FOF_Flag% = @or(noconfirm%,norecycle%)
      28. Dim opstruct#,30
      29. Dim file#,Add(Len(file$),2)
      30. Dim file2#,Add(Len(file2$),2)
      31. String file#,0=@Add$(file$,@Chr$(0))
      32. String file2#,0=@Add$(file2$,@Chr$(0))
      33. Long opstruct#,0=%hwnd Handle des aufrufenden Fensters
      34. Long opstruct#,4=Action&
      35. Long opstruct#,8=file# pfrom : hier der zu löschende Ordner
      36. Long opstruct#,12=file2# pto (muß 0 oder eine Bereichvar. mit Zieldateinamen z.B. bei Umbenennung sein
      37. Word opstruct#,16=FOF_Flag%
      38. Long opstruct#,18=0 Hier steht nach dem Aufruf 1, wenn User abgebrochen hat
      39. Long opstruct#,22=0 Unbedingt immer auf Null setzen!
      40. Long opstruct#,26=0 Zeiger(Bereich) auf Überschrift des Fortschrittsdialogs
      41. LET FEHLER&=@ShFileOperation(opstruct#)
      42. IF @equ(@long(opstruct#,18),1)
      43. @MessageBox("Die Dateioperation wurde abgebrochen!","Operation abgebrochen!",64)
      44. ELSEIF @neq(Fehler&,0)
      45. @MessageBox("Es ist ein Fehler aufgetreten","ShFileOperation "+@str$(Fehler&),16)
      46. EndIf
      47. Dispose file#
      48. Dispose file2#
      49. Dispose opstruct#
      50. endif
      51. EndProc
      52. REM Beispiel
      53. Fileaction "COPY","C:WINDOWS","E:TEMP",0,0
      54. Fileaction "DELETE","E:TEMP","",1,1
      Alles anzeigen
    • @dönertier
      Die Procedur habe ich und hier kommt die Fehlermeldung "Es ist ein Fehler aufgetreten"
      Es geht mir um Dateinamen mit Leerstellen im Namen:

      das ist ein beispiel.txt
      das ist ein beispiel.png usw.

      Windows-7 und 10 haben damit kein Problem.
      XProfan müsste da aktualisiert werden.
      Anscheinend liest hier der Compiler noch die Namen aus der DOS-Zeit
      und da waren Leerstellen verpönt
    • Hast du schon mal versucht die Dateinamen in " einzufassen, also so:
      dateiname$="\q"+dateiname$+"\q"
      ..entsprechend passend in deinem Quelltext.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • @jac
      So heißt die Datei im Original:

      red john ist tot - the mentalist jane tötet red john.mp4

      und so wird sie nach deinem Tipp gelesen:

      "redjohnisttot-thementalistjanetötetredjohn.mp4"

      Ohne deinen Tipp wird die Datei ohne Anführungszeichen angezeigt.
      Natürlich wird sie bei beiden Alternativen dann nicht gefunden.
      Die Leerstellen werden von den XProfan-Befehlen nicht akzeptiert.
      Hatte schon versucht, mit
      dateiname$=Tranlate$(dateiname$," ","_") umzuschreiben. Klappt nicht ! :-(
    • Das kann aber nicht ganz stimmen. "\q" + textstring + "\q" ergibt textstring in Anführungszeichen, dabei werden grundsätzlich keine Leerzeichen entfernt!
      Und natürlich kann es nicht klappen, den Dateinamen in irgend einer Form mittels Translate$ zu verändern. Dann ist es ja nicht mehr der richtige Name.

      Gruß Volkmar
    • @Volkmar
      Als Gast kann ich leider kein Bild zeigen, aber so wie ich geschrieben habe, stellt sich nach dem "\q"+dateiname$+"\q" der Name dar.
      Es werden alle Leerzeichen entfernt
      Wahrscheinlich muss ich "aufrüsten"
      Meine XProfan-Version ist 12.1b-NT
      Aber ich bin ja auch ein "Altprofaner" ;-)
      Danke für eure Hilfe :top:
    • Nein, du kannst die Leerzeichen nicht einfach löschen oder ersetzen: Sie gehören zum Dateinamen dazu. Wie Volkmar schon schrieb werden bei meiner Version keine Leerzeichen entfernt, sondern nur die " hinzugefügt:

      Copy "\q"+quelle$+"\q" > "\q"+ziel$+"\q" sollte stets funktionieren...
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net
    • Hallo Altprofaner, mal schnell in Profan10 probiert

      Quellcode

      1. Declare Name$
      2. Name$ = "Irgend ein Name mit Leerzeichen"
      3. Name$ = "\q" + Name$ + "\q"
      4. Print Name$
      5. WaitInput
      Auf dem Bildschirm steht dann:
      "Irgend ein Name mit Leerzeichen"
      Und die Version war noch viel älter. Es sollte auch bei Dir laufen.

      Gruß Volkmar
    • An Alle
      So sieht mein aktueller Code aus

      COPY "\q"+nameL$+"\q" > "\q"+nameR$+"\q"

      Der Dateiname und das Verzeichnis werden aus einer Gridbox gelesen.

      nr%=GETCURSEL(winL&)
      Dateiname$=GETTEXT$(winL&,nr%)
      nameL$=lwL$+"\\"+Dateiname$
      nameR$=lwR$+"\\"+Dateiname$

      Bis hier alles OK, will ich nun kopieren, werden die Leerzeichen entfernt.
      Es ist leider so :-(
    • Denkfehler meinerseits !
      Um in den Gridboxen Verzeichnisse und Dateien zu unterscheiden, habe ich beim Einlesen mit Addstring "*.*"
      das Vorzeichen bei den Verzeichnissen "[" mit CHR$(32) ersetzt
      Dateien bekamen das Vorzeichen CHR$(160) (Abgeguckt bei Frank Abbing ;-) )
      Jetzt mein Denkfehler:
      Bei Dateinamen habe ich auch mit Translate das Zeichen CHR$(32) entfernt, obwohl hier nicht nötig ist.
      Ich habe also selbst die Leerzeichen entfernt ! :oops: :oops: :oops:
      Nachdem ich diese eine Codezeile geremt hatte, funktioniert jetzt alles, wie es soll
      Danke noch einmal an alle Profaner ! :top:
    • Altprofaner schrieb:

      Denkfehler meinerseits !
      Besser spät als nie. :top: Das geht mir quasi jeden Tag so. :thumbsup:
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      XBox Classic/360S/One S/One X Scorpio Edition/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84) auf 60" 4k/3D LG
      OnePlus 7 8GB/256GB
      jacdelad.bplaced.net