Ricompilare le librerie FWH
Moderator: Enrico Maria Giordano
Ricompilare le librerie FWH
In fase di esecuzione di EXE non vengono visualizzate le icone.
Mi è stato detto di ricompilare le librerie FWH, cosa che è stata fatta (è stata ricompilata la libreria \FWH\LIB\fivehx.lib) ma il problema persiste.
Qualcuno sà darmi una mano ed al limite fornirmi le istruzioni ed i file .BAT per ricompilarle.
Grazie, Andrea.
Mi è stato detto di ricompilare le librerie FWH, cosa che è stata fatta (è stata ricompilata la libreria \FWH\LIB\fivehx.lib) ma il problema persiste.
Qualcuno sà darmi una mano ed al limite fornirmi le istruzioni ed i file .BAT per ricompilarle.
Grazie, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Ricompilare le librerie FWH
Spiegati meglio, che intendi dire? Magari con due righe di PRG compilabile che mostrino il problema sarebbe più facile aiutarti.aerrigo wrote:In fase di esecuzione di EXE non vengono visualizzate le icone.
EMG
PROCEDURE main()
LOCAL oBar
SET DATE british
SET EPOCH TO 1940
SET DATE FORMAT "dd/mm/yyyy"
SET DELETED on
SET DECIMAL TO 2
DEFINE WINDOW oWnd ;
TITLE "Test" ;
ICON "geoage" ;
MENU Buildmenu()
SET MESSAGE OF oWnd TO "" ;
TIME ;
DATE ;
KEYBOARD
oMsg:=oWnd:oMsgBar
DEFINE BUTTONBAR oBar OF oWnd 3DLOOK ;
SIZE 46,46
DEFINE BUTTON NAME "UTENTI" OF oBar TOOLTIP "Utenti" ;
NOBORDER ;
ACTION Utenti()
DEFINE BUTTON NAME "AZIENDE" OF oBar TOOLTIP "Prova" ;
NOBORDER ;
ACTION nil
DEFINE BUTTON NAME "COMUNI" OF oBar TOOLTIP "Prova2" ;
NOBORDER ;
ACTION nil
DEFINE BUTTON NAME "ANAZIE" OF oBar TOOLTIP "Prova3" ;
NOBORDER ;
ACTION nil
DEFINE BUTTON NAME "uscita" OF oBar TOOLTIP "Termina il programma" ;
NOBORDER ;
GROUP ;
ACTION oWnd:End()
ACTIVATE WINDOW oWnd MAXIMIZED VALID If( MsgYesNo( "Sei sicuro di voler chiudere Test ?","Avvertenza"), .T., .F. ) ;
ON PAINT ( FillBlue( oWnd ), Sfondo( hDc, oWnd ) )
RETURN
----EOF MAIN.PRG
Il problema è che il codice sopra riportato punta ad un .RES esterno e compilato su un PC, le icone si vedono, su un'altra macchina quando si clicca sull'icona Utenti viene restituito il seguente errore :
Application
===========
Path and name: G:\FWH\XXXX\p.exe (32 bits)
Size: 1,510,400 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 31/10/2006, 12:36:37
Error description: Error FiveWin/3 Cannot create Dialog Box:
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿResource: UTENTI
Stack Calls
===========
Called from CREATEDLGERROR(0)
Called from TDIALOG:ACTIVATE(0)
Called from UTENTI(50)
Called from (b)MAIN(38)
Called from TBTNBMP:CLICK(0)
Called from TBTNBMP:LBUTTONUP(0)
Called from TWINDOW:HANDLEEVENT(0)
Called from TBTNBMP:HANDLEEVENT(0)
Called from _FWH(0)
Called from WINRUN(0)
Called from TWINDOW:ACTIVATE(0)
Called from MAIN(61)
Il programma UTENTI.PRG è indicato di seguito :
#include "fivewin.ch"
Function Utenti()
LOCAL oDlg,oLbx
LOCAL cLbx,nRec,lCanc
USE UTENTI NEW
INDEX ON UTENTI->UTE_DES TO UTENTI
DEFINE DIALOG oDlg RESOURCE "UTENTI" TITLE "Utenti"
oDlg:lHelpIcon := .f.
lCanc := .F.
nRec := Lastrec()
REDEFINE LISTBOX oLbx var cLbx ;
FIELDS UTENTI->UTE_COD,UTENTI->UTE_DES,UTENTI->UTE_PWD,UTENTI->UTE_AZI ;
HEADERS "UTE_COD", "UTE_DES","UTE_PWD","UTE_AZI" ;
FIELDSIZES 80, 150,100,10 ;
ID 101 OF oDlg
oLbx:aJustify = { .f., .f.,.f.,.f.}
oLbx:lFocused := .T.
REDEFINE BUTTON ID 201 OF oDlg ;
ACTION NuovoUtente(oLbx)
REDEFINE BUTTON ID 202 OF oDlg ;
ACTION SchedaUtenti(oLbx)
REDEFINE BUTTON ID 203 OF oDlg ;
ACTION CercaUtent( oLbx )
REDEFINE BUTTON ID 204 OF oDlg ;
WHEN nRec > 0 ;
ACTION ( If( MsgYesNo("Elimino l'utente in evidenza?", "Avvertenza!"), ;
( UTENTI->( Elimina(oLbx) ), ;
lCanc:=.T.), ;
oLbx:SetFocus() ))
REDEFINE BUTTON ID 205 OF oDlg ;
ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER
CLOSE UTENTI
Return Nil
Function SchedaUtenti(oLbx)
Ciao, Andrea.
LOCAL oBar
SET DATE british
SET EPOCH TO 1940
SET DATE FORMAT "dd/mm/yyyy"
SET DELETED on
SET DECIMAL TO 2
DEFINE WINDOW oWnd ;
TITLE "Test" ;
ICON "geoage" ;
MENU Buildmenu()
SET MESSAGE OF oWnd TO "" ;
TIME ;
DATE ;
KEYBOARD
oMsg:=oWnd:oMsgBar
DEFINE BUTTONBAR oBar OF oWnd 3DLOOK ;
SIZE 46,46
DEFINE BUTTON NAME "UTENTI" OF oBar TOOLTIP "Utenti" ;
NOBORDER ;
ACTION Utenti()
DEFINE BUTTON NAME "AZIENDE" OF oBar TOOLTIP "Prova" ;
NOBORDER ;
ACTION nil
DEFINE BUTTON NAME "COMUNI" OF oBar TOOLTIP "Prova2" ;
NOBORDER ;
ACTION nil
DEFINE BUTTON NAME "ANAZIE" OF oBar TOOLTIP "Prova3" ;
NOBORDER ;
ACTION nil
DEFINE BUTTON NAME "uscita" OF oBar TOOLTIP "Termina il programma" ;
NOBORDER ;
GROUP ;
ACTION oWnd:End()
ACTIVATE WINDOW oWnd MAXIMIZED VALID If( MsgYesNo( "Sei sicuro di voler chiudere Test ?","Avvertenza"), .T., .F. ) ;
ON PAINT ( FillBlue( oWnd ), Sfondo( hDc, oWnd ) )
RETURN
----EOF MAIN.PRG
Il problema è che il codice sopra riportato punta ad un .RES esterno e compilato su un PC, le icone si vedono, su un'altra macchina quando si clicca sull'icona Utenti viene restituito il seguente errore :
Application
===========
Path and name: G:\FWH\XXXX\p.exe (32 bits)
Size: 1,510,400 bytes
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 31/10/2006, 12:36:37
Error description: Error FiveWin/3 Cannot create Dialog Box:
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿResource: UTENTI
Stack Calls
===========
Called from CREATEDLGERROR(0)
Called from TDIALOG:ACTIVATE(0)
Called from UTENTI(50)
Called from (b)MAIN(38)
Called from TBTNBMP:CLICK(0)
Called from TBTNBMP:LBUTTONUP(0)
Called from TWINDOW:HANDLEEVENT(0)
Called from TBTNBMP:HANDLEEVENT(0)
Called from _FWH(0)
Called from WINRUN(0)
Called from TWINDOW:ACTIVATE(0)
Called from MAIN(61)
Il programma UTENTI.PRG è indicato di seguito :
#include "fivewin.ch"
Function Utenti()
LOCAL oDlg,oLbx
LOCAL cLbx,nRec,lCanc
USE UTENTI NEW
INDEX ON UTENTI->UTE_DES TO UTENTI
DEFINE DIALOG oDlg RESOURCE "UTENTI" TITLE "Utenti"
oDlg:lHelpIcon := .f.
lCanc := .F.
nRec := Lastrec()
REDEFINE LISTBOX oLbx var cLbx ;
FIELDS UTENTI->UTE_COD,UTENTI->UTE_DES,UTENTI->UTE_PWD,UTENTI->UTE_AZI ;
HEADERS "UTE_COD", "UTE_DES","UTE_PWD","UTE_AZI" ;
FIELDSIZES 80, 150,100,10 ;
ID 101 OF oDlg
oLbx:aJustify = { .f., .f.,.f.,.f.}
oLbx:lFocused := .T.
REDEFINE BUTTON ID 201 OF oDlg ;
ACTION NuovoUtente(oLbx)
REDEFINE BUTTON ID 202 OF oDlg ;
ACTION SchedaUtenti(oLbx)
REDEFINE BUTTON ID 203 OF oDlg ;
ACTION CercaUtent( oLbx )
REDEFINE BUTTON ID 204 OF oDlg ;
WHEN nRec > 0 ;
ACTION ( If( MsgYesNo("Elimino l'utente in evidenza?", "Avvertenza!"), ;
( UTENTI->( Elimina(oLbx) ), ;
lCanc:=.T.), ;
oLbx:SetFocus() ))
REDEFINE BUTTON ID 205 OF oDlg ;
ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTER
CLOSE UTENTI
Return Nil
Function SchedaUtenti(oLbx)
Ciao, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Si scusa, le risorse sono nel .EXE, ed in effetti aprendo i 2 .EXE in quello che non visualizza le icone, non c'è praticamente niente.EnricoMaria wrote:Un .RES non può essere esterno, deve per forza essere inglobato nell'EXE. Solo una DLL può essere esterna. Controlla che nell'EXE ci siano le risorse aprendolo con il Resource Workshop o altro editor di risorse.aerrigo wrote:Il problema è che il codice sopra riportato punta ad un .RES esterno
EMG
Sai dirmi cosa posso controllare poichè "a prima vista" l'ambiente è identico, solo che su un PC c'è Win XP e sull'altro Win 2000 PRO, l'unica differenza mi sembra questa.
Ciao, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Il file per linkare è questo :EnricoMaria wrote:La versione di Windows non fa alcuna differenza. Devi controllare il batch di compilazione e in particolare il punto in cui il linker inserisce le risorse nell'EXE.
EMG
@ECHO OFF
CLS
rem set paths
IF "%BOCC%"=="" SET BOCC=d:\Fwh\bcc55
IF "%ROOT%"=="" SET ROOT=d:\Fwh
IF exist %1.exe del %1.exe
REM linka
%BOCC%\bin\ilink32 -Gn -Tpe -aa -L%BOCC%\lib; @Flink32.bc
e il Flink32.bc è questo :
c0w32.obj +
@ListObjs.rsp, +
p.exe, +
p.map, +
@ListLibs.rsp,
p.res
Fra l'altro sono gli stessi che stanno sul'altro PC.
Ciao, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
La sintassi non mi sembra corretta (non ci vuole il punto e virgola dopo il percorso delle librerie e tra la lista delle librerie e il RES c'è il parametro opzionale deffile) però se dici che sull'altro PC funziona...
Magari prova a portare tutto (ma proprio tutto) l'ambiente da un PC all'altro e vedi se funziona.
Altro non mi viene in mente.
EMG
Magari prova a portare tutto (ma proprio tutto) l'ambiente da un PC all'altro e vedi se funziona.
Altro non mi viene in mente.
EMG
Ora nel file L.bat è così :EnricoMaria wrote:La sintassi non mi sembra corretta (non ci vuole il punto e virgola dopo il percorso delle librerie e tra la lista delle librerie e il RES c'è il parametro opzionale deffile) però se dici che sull'altro PC funziona...
Magari prova a portare tutto (ma proprio tutto) l'ambiente da un PC all'altro e vedi se funziona.
Altro non mi viene in mente.
EMG
%BOCC%\bin\ilink32 -Gn -Tpe -aa -L%BOCC%\lib @Flink32.bc
A quale parametro opzionale ti riferisci ?
Ciao, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Si, scusa avrai notato che non sono una scheggia.EnricoMaria wrote:deffile. Dalla documentazione:
EMGILINK32 [@respfile][options] startup myobjs, [exe], [mapfile], [libraries], [deffile], [resfile]
Ma da qualche parte non c'è una documentazione di riferimento ?
Grazie, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Compilazione Librerie
Caro Enrico,
volevo ringraziarti, ho risolto il problema.
Sinceramente non ho ancora capito come perchè ho fatto tante prove.
Appena ne vengo a capo lo pubblico, così se qualcuno ne ha bisogno potrà trovarlo qui.
Grazie ancora, Andrea.
volevo ringraziarti, ho risolto il problema.
Sinceramente non ho ancora capito come perchè ho fatto tante prove.
Appena ne vengo a capo lo pubblico, così se qualcuno ne ha bisogno potrà trovarlo qui.
Grazie ancora, Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: Compilazione Librerie
Allora da quello che ho capito, rivedendo i file di compilazione/link sembra che se non indichi l'unità disco nel file ListLibs.rsp non viene caricato il .RES.EnricoMaria wrote:Benissimo!
EMG
Stò ancora indagando, ma la cosa mi sembra alquanto strana.
Andrea.
Andrea Errigo
info@andreaerrigo.it
info@andreaerrigo.it