| |
|
|
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 |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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:
MfG
Sebastian |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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... |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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 ▲ |
|
|
|