| |
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
anhängender Code funktioniert no mehr si uno ihn traducido
Das Dateiauswahlfenster no es geöffnet, en el Interpreter y como Compilat funktioniert alles bestens.
Yo hoffe du kannst veces otra vez helfen
Def Getsavefilename(1) !"COMDLG32.DLL","GetSaveFileNameA"
Def Make256cadena(1) ((@$(1) + @Chr$(0)) + @Espacio$(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&
Declarar Ofn#
Dim Ofn#,Tagofn
Struct _rect = Left&,
Top&,
Right&,
Bottom&
Declarar Rect#
Dim Rect#,_rect
Declarar Ergebnis&
Declarar Icon&
Proc Iconload
Declarar Name$
Declarar Dll&
Name$ = "#1001" + @Chr$(0)
Dll& = @Usedll("SHELL32.DLL")
Icon& = @Externo("USER32.DLL","LoadImageA",Dll&,@Addr(Name$),1,48,48,0)
Freedll Dll&
ENDPROC
Proc Savedateihook
Parámetros Hdlg&,Umsg&,Wparam&,Lparam&
Claro Rect#
Declarar Parent&
Declarar Fenster&
Declarar Text&
Declarar Weiter&
Declarar Neu&
Declarar Abbruch&
Declarar Static&
Declarar Raus&
If Umsg& = 49265
If @Fileexists(@String$(Ofn#.Lpstrfile&,0)) = 1
Parent& = @Externo("USER32","GetParent",Hdlg&)
@Externo("USER32","GetWindowRect",Parent&,Rect#)
Fenster& = @Crear("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& = @Crear("Text",Fenster&,"Folgende Aktion ausführen:",80,30,200,40)
Usefont "Curier New",14,0,0,0,0
Setdialogfont 1
Weiter& = @Crear("DefButton",Fenster&,"Anhängen",25,75,82,26)
Neu& = @Crear("Button",Fenster&,"Überschreiben",115,75,82,26)
Abbruch& = @Crear("Button",Fenster&,"Abbruch",205,75,82,26)
Static& = @Control("Static","",$54000103,10,10,48,48,Fenster&,0,%Hinstance,$0)
@SendMessage(Static&,$170,Icon&,0)
Setdialogfont 0
Raus& = 0
Sinestar encargado Raus& = 1
Waitinput
If @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&)
Volver 1
Endif
Endif
Volver 0
ENDPROC
Proc Savedatei
Parámetros Hwnd&,Titel$,Filespec$,Initialdir$,Filter$,Defext$
Declarar Customfilter$
Declarar Filetitle$
Declarar Rcode&
Declarar Auswahl$
Claro Ofn#
Titel$ = Make256cadena(Titel$)
Filespec$ = Make256cadena(Filespec$)
Initialdir$ = Make256cadena(Initialdir$)
Filter$ = @Translate$(Filter$,"|",@Chr$(0)) + @Chr$(0)
Filter$ = Make256cadena(Filter$)
Defext$ = Make256cadena(Defext$)
With Ofn#
.Lstructsize& = @Sizeof(Ofn#)
.Hwndowner& = Hwnd&
.Hinstance& = %Hinstance
.Lpstrfilter& = @Addr(Filter$)
.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#)
If Rcode& = 1
If Ergebnis& <> 0
Auswahl$ = @Str$(Ergebnis&) + "|" + @String$(Ofn#.Lpstrfile&,0)
Elseif Ergebnis& = 0
Auswahl$ = ""
Endif
Más
Auswahl$ = ""
Endif
@Procaddr(Savedateihook,-4)
Volver Auswahl$
ENDPROC
#######################
Windowstyle 8 + 16 + 512 + 1024
Ventana 100,100-300,300
Declarar Ende&
Declarar Button&
Button& = @Crear("Button",%Hwnd,"Button",10,10,100,40)
Iconload
Sinestar encargado Ende& = 1
Waitinput
If %Key = 2
Ende& = 1
Elseif @Clicked(Button&)
Savedatei(%Hwnd,"Ausgabe el Ergebnisse después de:","DLQueue",$Progdir,"DAT File (*.dat)|*.dat|Textfile (*.txt)|*.txt","*.dat")
Endif
Endwhile
Disponer Rect#
Disponer Ofn#
@Externo("USER32.DLL","DestroyIcon",Icon&)
End
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 06.07.2006 ▲ |
|
|
|
|
Sebastian König | ¡Hola Georg,
primero kann Yo el problema bestätigen - tritt incluso auch todavía con el aktuellen Beta-Versión en....
El Ursache podría Yo allerdings todavía no encontrar - mein erster Verdacht, dass lo con el Hook zusammenhängen podría, ha se no bestätigt... CommDlgExtendedError() liefert simplemente CDERR_INITIALIZATION.
Leider bin Yo en el Moment una bischen en el Stress (morgen una Klausur, Montag igual el nächste ), sodass Yo wahrscheinlich sólo Montag Abend intensiver después de el Ursache suchen kann. Sorry, dass Usted una bischen warten musst! Yo voluntad mich natürlich inmediatamente por lo tanto kümmern, si yo otra vez genug Tiempo habe.
MfG
Sebastian |
|
|
| |
|
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
laß dir Por favor, Tiempo y bastante viel Glück para el Prüfung !! |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 07.07.2006 ▲ |
|
|
|
|
Sebastian König | ¡Hola Georg,
así - Yo denke, Yo habs . Der entscheidende Punkt es esta Línea:
.Lpstrcustomfilter& = @Addr(Customfilter$)
Nachdem Yo simplemente veces en lugar de el Adresse una Null angegeben habe, funktionierte lo plötzlich auch con Profano2Cpp. Erst podría Yo el nada erklären, a Yo folgendes bemerkte: In (X)Profano son @Addr() en Leerstrings (y por lo tanto es lo en Customfilter$, como kein Valor zugewiesen se) siempre 0 zurück. Das war me bisher nie aufgefallen...
Un Anpassung war aber para Glück bastante simplemente posible. Yo habe gerade una neue Beta-Versión hochgeladen, en el el Fehler korrigiert es. Außerdem gab lo todavía una Problema por el Benutzung de WAITINPUT en el Hook-Procedimiento, el Yo ebenfalls Fijo habe.
El aktuelle Beta (1.5.9c) findest Usted en el Profano2Cpp-Homepage. Wenn lo así auch con usted problemlos funktioniert, kann Yo mich aufmachen, el Korrekturen en Versión 1.5a zurückzuportieren.
Nochmals danke para el Geduld!
MfG
Sebastian |
|
|
| |
|
|
|
Michael Dell | Ähm,
el war más una Eingabefehler uno braucht sólo .Nmaxcustfilter& en 255 a conjunto entonces gehts ausgezeichnet! |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 10.07.2006 ▲ |
|
|
|
|
Sebastian König | ¡Hola Michael,
stimmt - el hilft auch . Aunque funktioniert lo sí en el ursprünglichen Versión en XProfan incluso, qué wohl a el Comportamiento de @Addr() liegt. Hier una corto Testcode dazu:
MfG
Sebastian |
|
|
| |
|
|
|
Michael Dell | Sí, es deutlich a erkennen!
Intressant Es el Anzeige si el Test- Programa con Prf2Cpp (v1.5a-new3) traducido hast!!! |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 11.07.2006 ▲ |
|
|
|
|
Sebastian König | Sí, stimmt. Hier se de Addr() auch en Leerstrings una Adresse zurückgegeben. (Was daran liegt, dass auch el Leerstrings una kurzen Puffer con uno 0 direkt al Anfang benutzen....). Si usted el código con el aktuellen Beta (1.5.9c) traducido, debería el Comportamiento genau el de (X)Profano entsprechen
MfG
Sebastian |
|
|
| |
|
|
|
Sebastian König | Was me gerade todavía einfällt: In el Beta-Versión es natürlich auch el [...] diskutierte Möglichkeit a Steuerung el Übersetzung de @Call() y @Externo() integriert. Dokumentiert Yo Todo en el Ayuda bajo el neuen Rubrik Sonstige Features... |
|
|
| |
|
|
|
Michael Dell | Dachte me ya el jede Variable/String una Adresse ha bastante igual si leer oder no es doch eh alles sólo una addressierter Speicherbereich. Es also más una, na sagen wir veces unerwartetes Comportamiento de XProfan oder? |
|
|
| Salu Michael...
Hab zwar krumme Fieß awer dofir e' ecklich Gsicht! | 11.07.2006 ▲ |
|
|
|
|
Sebastian König | Unerwartet - en el Tat . Sombrero bastante schön gedauert, a me endlich aufgefallen es... direkt bin Yo nada en el Concepto gekommen - bemerkt Yo lo sólo, como Yo el komplette OFN-Struktur con BlockWrite en un Expediente geschrieben y luego el Ergebnisse con XProfan y Profano2Cpp verglichen habe...
Meinen Tests zufolge es auch sólo seit Profano² 7.0 así - con 6.6 todavía se auch en Leerstrings siempre una Adresse zurückgegeben. Wahrscheinlich es simplemente una de Delphi vorgegebene Eigenschaft el en Versión 7.0 eingeführten langen Cuerdas....
Como De todos modos - lo ließ se para Glück con uno pequeño Änderung en el Expediente pstring.h auch en Profano2Cpp muy simplemente umsetzen .
MfG
Sebastian |
|
|
| |
|
|
|
Georg Hovenbitzer | ¡Hola Sebastian,
Yo hoffe el Prüfungen son bien verlaufen
Nun a mi Problema. El neue Versión de Profano2Cpp funktioniert muy bien con el Demo Code hier. Wende Yo esta Versión aber el todo Projekt a, stürzt el exe direkt después de el Start con uno Schutzverletzung de, con el Versión 1.5a se ejecuta alles sauber salvo que aquí genannte Problema. Wenn Yo, el Source Code Comparar hay una Menge Unterschiede, Yo voluntad dir esta veces como private Mail hier zukommen dejar.
Aber sonst veces otra vez super Arbeit |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 13.07.2006 ▲ |
|
|
|