Français
C ++ Forum

GetSaveFileName

 

Georg
Hovenbitzer
allô Sebastian,

anhängender Code funktioniert pas plus si on ihn traduit

cela Dateiauswahlfenster wird pas ouvert, im Interpreter et comme Compilat funktioniert alles bestens.

je hoffe tu peux la fois wieder aider
Def Getsavefilename(1) !"COMDLG32.DLL","GetSaveFileNameA"
Def Make256string(1) ((@$(1) + @Chr$(0)) + @Space$(256 - @Len(@$(1))))
Struct Tagofn = Lstructsize&,
Hwndowner&,
Hinstance&,
Lpstrfilter&,
Lpstrcustomfilter&,
Nmaxcustfilter&,
Nfilterindex&,
Lpstrfile&,
Nmaxfile&,
Lpstrfiletitle&,
Nmaxfiletitle&,
Lpstrinitialdir&,
Lpstrtitle&,
Flags&,
Nfileoffset%,
Nfileextension%,
Lpstrdefext&,
Lcustdata&,
Lpfnhook&,
Lptemplatename&,
Pvreserved&,
Dwreserved&,
Flagsex&
Déclarer Ofn#
Faible Ofn#,Tagofn
Struct _rect = Left&,
Top&,
Right&,
Bottom&
Déclarer Rect#
Faible Rect#,_rect
Déclarer Ergebnis&
Déclarer Icon&

Proc Iconload

    Déclarer nom$
    Déclarer Dll&
    nom$ = "#1001" + @Chr$(0)
    Dll& = @Usedll("SHELL32.DLL")
    Icon& = @Externe("User32.DLL","LoadImageA",Dll&,@Addr(nom$),1,48,48,0)
    Freedll Dll&

ENDPROC

Proc Savedateihook

    Paramètres Hdlg&,Umsg&,Wparam&,Lparam&
    Claire Rect#
    Déclarer Parent&
    Déclarer Fenster&
    Déclarer Text&
    Déclarer Weiter&
    Déclarer Neu&
    Déclarer Abbruch&
    Déclarer Static&
    Déclarer Raus&

    Si Umsg& = 49265

        Si @Fileexists(@String$(Ofn#.Lpstrfile&,0)) = 1

            Parent& = @Externe("User32","GetParent",Hdlg&)
            @Externe("User32","GetWindowRect",Parent&,Rect#)
            Fenster& = @Créer("Dialog",%Hwnd,"Datei existiert",-1,-1,-1,0)
            Setwindowpos Fenster& = (Rect#.Left& + (((Rect#.Right& - Rect#.Left&) / 2) - 160)),(Rect#.Top& + (((Rect#.Bottom& - Rect#.Top&) / 2) - 75))- 320,150
            Text& = @Créer("Text",Fenster&,"Folgende Aktion effectuer:",80,30,200,40)
            Usefont "Curier New",14,0,0,0,0
            Setdialogfont 1
            Weiter& = @Créer("DefButton",Fenster&,"Anhängen",25,75,82,26)
            Neu& = @Créer("Button",Fenster&,"Überschreiben",115,75,82,26)
            Abbruch& = @Créer("Button",Fenster&,"Abbruch",205,75,82,26)
            Static& = @Contrôle("Static",»,$54000103,10,10,48,48,Fenster&,0,%Hinstance,$0)
            @SendMessage(Static&,$170,Icon&,0)
            Setdialogfont 0
            Raus& = 0

            Whilenot Raus& = 1

                Waitinput

                Si @Clicked(Weiter&)

                    Ergebnis& = 1
                    Raus& = 1

                Elseif @Clicked(Neu&)

                    Ergebnis& = 2
                    Raus& = 1

                Elseif (@Clicked(Abbruch&) Or (%Key = 2))

                    Ergebnis& = 0
                    Raus& = 1

                Endif

            Endwhile

            @Destroywindow(Fenster&)
            Retour 1

        Endif

    Endif

    Retour 0

ENDPROC

Proc Savedatei

    Paramètres Hwnd&,Titel$,Filespec$,Initialdir$,filtre$,Defext$
    Déclarer Customfilter$
    Déclarer Filetitle$
    Déclarer Rcode&
    Déclarer sélection$
    Claire Ofn#
    Titel$ = Make256string(Titel$)
    Filespec$ = Make256string(Filespec$)
    Initialdir$ = Make256string(Initialdir$)
    filtre$ = @Translate$(filtre$,"|",@Chr$(0)) + @Chr$(0)
    filtre$ = Make256string(filtre$)
    Defext$ = Make256string(Defext$)

    With Ofn#

        .Lstructsize&       = @Sizeof(Ofn#)
        .Hwndowner&         = Hwnd&
        .Hinstance&         = %Hinstance
        .Lpstrfilter&       = @Addr(filtre$)
        .Lpstrcustomfilter& = @Addr(Customfilter$)
        .Nmaxcustfilter&    = 0
        .Nfilterindex&      = 1
        .Lpstrfile&         = @Addr(Filespec$)
        .Nmaxfile&          = 256
        .Lpstrfiletitle&    = @Addr(Filetitle$)
        .Nmaxfiletitle&     = 256
        .Lpstrinitialdir&   = @Addr(Initialdir$)
        .Lpstrtitle&        = @Addr(Titel$)
        .Flags&             = ($4 | $20 | $80000 | $800)
        .Nfileoffset% = 0
        .Nfileextension% = 0
        .Lpstrdefext&       = @Addr(Defext$)
        .Lcustdata& = 0
        .Lpfnhook& = @Procaddr(Savedateihook,4)
        .Lptemplatename& = 0
        .Pvreserved& = 0
        .Dwreserved& = 0
        .Flagsex& = 0

    Endwith

    Ergebnis& = 2
    Rcode& = Getsavefilename(Ofn#)

    Si Rcode& = 1

        Si Ergebnis& <> 0

            sélection$ = @Str$(Ergebnis&) + "|" + @String$(Ofn#.Lpstrfile&,0)

        Elseif Ergebnis& = 0

            sélection$ = »

        Endif

    D'autre

        sélection$ = »

    Endif

    @Procaddr(Savedateihook,-4)
    Retour sélection$

ENDPROC

#######################
Windowstyle 8 + 16 + 512 + 1024
Fenêtre 100,100-300,300
Déclarer Ende&
Déclarer Button&
Button& = @Créer("Button",%Hwnd,"Button",10,10,100,40)
Iconload

Whilenot Ende& = 1

    Waitinput

    Si %Key = 2

        Ende& = 1

    Elseif @Clicked(Button&)

        Savedatei(%Hwnd,"Ausgabe qui Ergebnisse pour:","DLQueue",$Progdir,"DAT File (*.dat)|*.dat|Textfile (*.txt)|*.txt","*.dat")

    Endif

Endwhile

Dispose Rect#
Dispose Ofn#
@Externe("User32.DLL","DestroyIcon",Icon&)
Fin
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
06.07.2006  
 




Sebastian
König
allô Georg,

erstmal peux je cela Problem bestätigen - tritt sogar aussi encore avec qui aktuellen Beta-Version sur....

qui Ursache konnte je allerdings encore pas trouver - mon erster le doute, dass es avec dem Hook zusammenhängen pourrait, hat sich pas bestätigt... CommDlgExtendedError() liefert simple CDERR_INITIALIZATION.

malheureusement suis je im Moment un un peu im Stress (demain une Klausur, lundi juste qui prochain ), sodass je wahrscheinlich seulement lundi soir intensiver pour qui Ursache chercher peux. Sorry, dass Du un un peu attendre musst! je werde mich naturellement tout de suite tout autor kümmern, si je wieder genug Zeit habe.

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
06.07.2006  
 




Georg
Hovenbitzer
allô Sebastian,

laß dir s'il te plaît Zeit et entier viel Glück pour qui Prüfung !!
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
07.07.2006  
 




Sebastian
König
allô Georg,

so - je denke, je habs . qui entscheidende Punkt ist cet la ligne:

.Lpstrcustomfilter& = @Addr(Customfilter$)

après que je simple la fois statt qui Adresse une zéro angegeben habe, funktionierte es soudain aussi avec Profan2Cpp. seulement konnte je mir cela gar pas expliquer, jusqu'à je folgendes bemerkte: dans (X)Profan gibt @Addr() chez Leerstrings (et tout autor handelt es sich chez Customfilter$, là ne...aucune Wert zugewiesen wird) toujours 0 zurück. cela était mir bisher nie aufgefallen...

une Anpassung était mais zum Glück droite simple possible. j'ai justement une neue Beta-Version hochgeladen, dans qui qui faute korrigiert ist. Aussi donnais es encore un Problem par qui Benutzung de WAITINPUT dans qui Hook-Procédure, le moi également behoben habe.

qui aktuelle Beta (1.5.9c) findest Du sur qui Profan2Cpp-Page d'accueil. si es avec cela aussi chez Dir problemlos funktioniert, peux je mich aufmachen, qui Korrekturen sur Version 1.5a zurückzuportieren.

Nochmals merci pour qui patience!

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
10.07.2006  
 




Michael
Dell
Ähm,

cela était plutôt un Eingabefehler on braucht seulement .Nmaxcustfilter& sur 255 trop mettons ensuite gehts ausgezeichnet!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
10.07.2006  
 




Sebastian
König
allô Michael,

stimmt - cela hilft aussi . Allerdings funktioniert es oui dans qui original Version dans XProfan selbst, quoi wohl à dem Comportement des @Addr() liegt. ici un court Testcode en supplément:
declare text$
imprimer Addr(text$)
let text$ = "Hallo"
imprimer Addr(text$)
let text$ = »
imprimer Addr(text$)
waitkey

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.07.2006  
 




Michael
Dell
oui, ist deutlich trop erkennen!

Intressant ist qui Anzeige si Du cela Test- Programme avec Prf2Cpp (v1.5a-new3) traduit la hâte!!!
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
11.07.2006  
 




Sebastian
König
oui, stimmt. ici wird de Addr() aussi chez Leerstrings une Adresse retour. (quoi daran liegt, dass aussi qui Leerstrings une kurzen Puffer avec einer 0 direct am Anfang benutzen....). si Du den Code avec qui aktuellen Beta (1.5.9c) traduit, sollte cela Verhalten oui c'est ca dem de (X)Profan entsprechen

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.07.2006  
 




Sebastian
König
quoi mir justement encore einfällt: dans qui Beta-Version ist naturellement aussi qui [...]  diskutierte Possibilité zur Contrôle qui Übersetzung de @Call() et @Externe() integriert. Dokumentiert habe je cela ganze dans qui Aider sous qui neuen Rubrik Sonstige Features...
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.07.2006  
 




Michael
Dell
Dachte mir déjà cela chacun Variable/String une Adresse hat entier juste si vide ou bien pas mais est eh alles seulement un addressierter Speicherbereich. c'est alors plutôt un, na dire wir la fois unerwartetes Comportement des XProfan ou bien?
 
Salu Michael...

Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! 
11.07.2006  
 




Sebastian
König
Unerwartet - dans qui acte . Hat entier joli gedauert, jusqu'à mir cela enfin aufgefallen ist... direct suis je gar pas sur qui concept gekommen - bemerkt habe je es seulement, comme je qui komplette OFN-Struktur avec BlockWrite dans un Dossier geschrieben et ensuite qui Ergebnisse avec XProfan et Profan2Cpp verglichen habe...

Meinen Tests zufolge ist es aussi seulement depuis Profan² 7.0 so - avec 6.6 encore wird aussi chez Leerstrings toujours une Adresse retour. Wahrscheinlich ist es simple une de Delphi vorgegebene qualité qui dans Version 7.0 eingeführten langen Cordes....

comment De toute façon - es ließ sich zum Glück avec einer kleinen Changement dans qui Dossier pstring.h aussi dans Profan2Cpp très simple umsetzen .

MfG

Sebastian
 
Windows XP, XProfan/Profan² 4.5 bis 11
Profan2Cpp-Homepage:  [...] 
Alte Profan²-Seite:  [...] 
11.07.2006  
 




Georg
Hovenbitzer
allô Sebastian,

je hoffe qui Prüfungen sommes bien verlaufen

eh bien trop meinem Problem.
qui neue Version de Profan2Cpp funktioniert très bien avec dem Demo Code ici.
Wende je cet Version mais sur cela ganze projet à, stürzt qui exe direct pour dem Start avec einer Schutzverletzung ab, avec qui Version 1.5a fonctionne alles net jusqu'à sur que voici genannte Problem.
si Je l' Source Code vergleiche gibt es une la quantité Unterschiede, je werde dir cet la fois comme private Mail ici zukommen laisser.

mais sonst la fois wieder super travail
 
Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a)
13.07.2006  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

5.377 Views

Untitledvor 0 min.
liveFamilie28.03.2012
Andreas Koch02.12.2011

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie