Seite 1 von 2

SaveFileRequester()

Verfasst: 06.06.2006 14:10
von Alves
Ich habe eine Frage:

Wie kann ich abfragen, welchen Dateityp der User im SaveFilerequester ausgewählt hat?

ZB Alle Dateien, Textdateien, HTML....


MfG

Alves

Verfasst: 06.06.2006 14:36
von Karl
Du könntest GetExtensionPart(Datei.s) verwenden, um die Dateiart herauszufinden.

Es gibt auch die Methode mit SelectedFilePattern().

Gruß Karl

Verfasst: 06.06.2006 14:40
von Tafkadasom2k5
Hi!
Du kannst erstmal begrenzen, was der "Openfile"-Requester anzeigt:

Code: Alles auswählen

sFilename.s = ""
sListenArt.s = "Text-Datei (*.txt) | *.txt"
sDatEndung.s = "txt"
OpenFileDialog_(#Window_0,"Datei öffnen...", sFileName,"",sListenArt,sDatEndung,0 )
Und am Ende guckst du einfach nach, wie die letzten 3-4 Zeichen aussehen, die "sFileName" zurückgibt- weil da steht nämlich die Endung drinne ;)

Ich glaube, da gab es PureBasic einen vordefinierten Befehl für, der die Endung vom Rest trennt, bin mir da aber auch nicht mehr so sicher.

Der Code ist aus PowerBasic portiert, und ich kann nicht sagen, ob er so funktionieren würde, da ich gerade auf der Arbeit sitze..

Gr33tz
Tafkadasom2k5

Verfasst: 06.06.2006 14:46
von Macros
Tafkadasom2k5 hat geschrieben:Und am Ende guckst du einfach nach, wie die letzten 3-4 Zeichen aussehen, die "sFileName" zurückgibt- weil da steht nämlich die Endung drinne ;)
Stimmt nicht unbedingt, da man mit NFTS auch laaaange Endungen vergeben kann.
(wie lang weis ich nicht, vielleicht 255 Zeichen)

edit: mit dem Namen der Datei dürfen es genau 255 sein.

Verfasst: 06.06.2006 14:50
von Kaeru Gaman
gibt nen befehl dafür Get ExtensionPart oder so ähnlich, schau mal in der help.
außerdem wie Karl schon angedeutet hat, kann man auch beim SaveRequester die möglichen dateitypen vorgeben, auch das sollte afaik in der help stehen.

Verfasst: 06.06.2006 15:04
von #NULL

Code: Alles auswählen

StandardFile$ = ""
Pattern$      = "Text (*.txt)|*.txt;*.bat|PureBasic (*.pb)|*.pb|Alle Dateien (*.*)|*.*"
                ; 3 pattern (0-2)
Pattern       = 0
File$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", StandardFile$, Pattern$, Pattern)

If SelectedFilePattern()=-1
  Debug "abgebrochen"
ElseIf SelectedFilePattern()=0
  Debug "der ausgewählte pattern ist    Text (*.txt)|*.txt;*.bat"
ElseIf SelectedFilePattern()=1
  Debug "der ausgewählte pattern ist    PureBasic (*.pb)|*.pb"
ElseIf SelectedFilePattern()=2
  Debug "der ausgewählte pattern ist    Alle Dateien (*.*)|*.*"
EndIf

Verfasst: 06.06.2006 22:02
von Alves
Hatte ich nicht SaveFileRequester() geschrieben?

Naja, danke, Selectedfilepattern() funzt

Verfasst: 06.06.2006 22:24
von Alves
Kleine Frage am Rand:
Syntaxhighlighting Lib für 3.ß4?

2. Warum hat er hier keine aktuelle Datei?

Code: Alles auswählen

Procedure save()
  OpenFile(#file,save$)
  WriteString(text$) 
  CloseFile(#file)
EndProcedure  


Verfasst: 06.06.2006 22:46
von Kiffi
Alves hat geschrieben:Kleine Frage am Rand:
Syntaxhighlighting Lib für 3.ß4?
äh, ja, was ist damit?
Alves hat geschrieben:2. Warum hat er hier keine aktuelle Datei?
was heisst 'aktuelle Datei'?

Generell: Immer prüfen, ob OpenFile korrekt durchgeführt werden konnte.

Also:

Code: Alles auswählen

  If OpenFile(#file,save$)
    [...]
besser:

Code: Alles auswählen

  FF = OpenFile(#PB_Any,save$)
  If FF
    [...]
    CloseFile(FF)
  EndIf
Du hast sicherlich auch überprüft, ob in save$ ein gültiger Pfad steht?

Grüße ... Kiffi

Verfasst: 07.06.2006 04:44
von Kaeru Gaman
Alves hat geschrieben:2. Warum hat er hier keine aktuelle Datei?

Code: Alles auswählen

Procedure save()
  OpenFile(#file,save$)
  WriteString(text$) 
  CloseFile(#file)
EndProcedure  

sind save$ und text$ denn global?
wenn nicht sind sie leer innerhalb der procedure.