Page 1 of 2
Ricompilare le librerie FWH
Posted: Tue Oct 31, 2006 11:10 am
by aerrigo
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.
Re: Ricompilare le librerie FWH
Posted: Tue Oct 31, 2006 11:29 am
by Enrico Maria Giordano
aerrigo wrote:In fase di esecuzione di EXE non vengono visualizzate le icone.
Spiegati meglio, che intendi dire? Magari con due righe di PRG compilabile che mostrino il problema sarebbe più facile aiutarti.
EMG
Posted: Tue Oct 31, 2006 11:41 am
by aerrigo
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.
Posted: Tue Oct 31, 2006 11:50 am
by Enrico Maria Giordano
aerrigo wrote:Il problema è che il codice sopra riportato punta ad un .RES esterno
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.
EMG
Posted: Tue Oct 31, 2006 11:57 am
by aerrigo
EnricoMaria wrote:aerrigo wrote:Il problema è che il codice sopra riportato punta ad un .RES esterno
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.
EMG
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.
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.
Posted: Tue Oct 31, 2006 12:00 pm
by Enrico Maria Giordano
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
Posted: Tue Oct 31, 2006 12:39 pm
by aerrigo
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
Il file per linkare è questo :
@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.
Posted: Tue Oct 31, 2006 12:49 pm
by Enrico Maria Giordano
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
Posted: Tue Oct 31, 2006 1:01 pm
by aerrigo
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
Ora nel file L.bat è così :
%BOCC%\bin\ilink32 -Gn -Tpe -aa -L%BOCC%\lib @Flink32.bc
A quale parametro opzionale ti riferisci ?
Ciao, Andrea.
Posted: Tue Oct 31, 2006 5:38 pm
by Enrico Maria Giordano
deffile. Dalla documentazione:
ILINK32 [@respfile][options] startup myobjs, [exe], [mapfile], [libraries], [deffile], [resfile]
EMG
Posted: Tue Oct 31, 2006 5:51 pm
by aerrigo
EnricoMaria wrote:deffile. Dalla documentazione:
ILINK32 [@respfile][options] startup myobjs, [exe], [mapfile], [libraries], [deffile], [resfile]
EMG
Si, scusa avrai notato che non sono una scheggia.
Ma da qualche parte non c'è una documentazione di riferimento ?
Grazie, Andrea.
Posted: Tue Oct 31, 2006 6:05 pm
by Enrico Maria Giordano
Sì, certo. E' appunto da quella che ho tratto la sintassi che ti ho citato. La puoi scaricare dal sito della Borland. Oppure mi scrivi in privato e te la mando io.
EMG
Compilazione Librerie
Posted: Tue Oct 31, 2006 6:09 pm
by aerrigo
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.
Re: Compilazione Librerie
Posted: Tue Oct 31, 2006 6:53 pm
by Enrico Maria Giordano
Benissimo!
EMG
Re: Compilazione Librerie
Posted: Wed Nov 22, 2006 7:42 am
by aerrigo
EnricoMaria wrote:Benissimo!
EMG
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.
Stò ancora indagando, ma la cosa mi sembra alquanto strana.
Andrea.