It is currently 2 August 2021, 0:18 Advanced search

again:non tutti i percorsi di codice restituiscono un valore

Domande e risposte su come utilizzare Instant Developer Foundation al meglio

again:non tutti i percorsi di codice restituiscono un valore

Postby zpj61 » 1 June 2021, 6:39

Inde v.21 r13, solo con debug disattivato il famoso messaggio: "non tutti i percorsi di codice restituiscono un valore" è ritornato. Il problema è che si manifesta solo con debug disattivato, con il debug attivo funziona correttamente. I messaggi del compilatore sono:

App_Code\MyWebForm.cs(64,19): warning CS0162: Rilevato codice non eseguibile.
App_Code\Calendario.cs(1016,14): error CS0161: 'CalendarioComp.Calendario.addMultipleEventsOpe(com.progamma.IDCachedRowSet)': non tutti i percorsi di codice restituiscono un valore
App_Code\Global.asax.cs(27,7): warning CS0162: Rilevato codice non eseguibile.

La cosa strana è che in inde la funzione è dichiarata void:

public void Calendario.addMultipleEventsOpe(
Recordset rs // Scrivi un commento per questo parametro o premi backspace per eliminare questo commento
)

mentre in C# è trasformata in int (non avevo mai fatto caso a questo pertanto non so se è normale):

public int addMultipleEventsOpe (IDCachedRowSet rs)

succede a qualcun'altro?
User avatar
zpj61
 
Posts: 767
Joined: 20 November 2015, 8:20
Location: Bassano del Grappa

Re: again:non tutti i percorsi di codice restituiscono un va

Postby d.termini » 1 June 2021, 6:50

Ti esce anche se fai ricompila tutto? Di solito quando mi escono errori strani (soprattutto su ambiti che non ho toccato) lo faccio e spariscono gli errori.
Ho il presentimento che succeda dopo aver recuperato l'ultima versione da TW e il compilato di alcuni componenti non coincida con il nuovo codice, ma quando tento di replicare il caso non ci riesco :D
d.termini
 
Posts: 949
Joined: 13 November 2017, 8:41

Re: again:non tutti i percorsi di codice restituiscono un va

Postby zpj61 » 1 June 2021, 7:03

Sfortunatamente sì, il ricompila tutto non mi salva, l'unica discriminante è debug attivo o no...
User avatar
zpj61
 
Posts: 767
Joined: 20 November 2015, 8:20
Location: Bassano del Grappa

Re: again:non tutti i percorsi di codice restituiscono un valore

Postby g.lanzi » 1 June 2021, 7:28

Direi che l'unica cosa possibile è guardare il codice compilato e la procedura che l'ha generato.

Puoi farci vedere il codice e la procedura nel progetto in qualche modo?
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3437
Joined: 29 September 2010, 10:24
Location: Bologna

Re: again:non tutti i percorsi di codice restituiscono un va

Postby zpj61 » 1 June 2021, 7:50

Siccome gli errori di questo tipo vengono fuori uno alla volta mi sto accorgendo che TUTTE le funzioni dichiarate come void sono trasformate in int (alemo quelle dove c'è un errore) e l'errore si manifesta se come ultima istruzione della funzione c'è un return e degug disabilitato( tra l'altro se ricordo bene return messi in una precedente versione per ovviare a questo tipo di errore). Siccome il numero di questi casi non è piccolo la cosa è estremamente fastidiosa.
User avatar
zpj61
 
Posts: 767
Joined: 20 November 2015, 8:20
Location: Bassano del Grappa

Re: again:non tutti i percorsi di codice restituiscono un va

Postby zpj61 » 1 June 2021, 7:51

g.lanzi wrote:Direi che l'unica cosa possibile è guardare il codice compilato e la procedura che l'ha generato.

Puoi farci vedere il codice e la procedura nel progetto in qualche modo?


Vedo di trovare una abbastanza compatta....
User avatar
zpj61
 
Posts: 767
Joined: 20 November 2015, 8:20
Location: Bassano del Grappa

Re: again:non tutti i percorsi di codice restituiscono un va

Postby zpj61 » 1 June 2021, 8:38

@g.lanzi ti ho girato il codice sorgente
User avatar
zpj61
 
Posts: 767
Joined: 20 November 2015, 8:20
Location: Bassano del Grappa

Re: again:non tutti i percorsi di codice restituiscono un va

Postby zpj61 » 7 June 2021, 8:26

zpj61 wrote:
g.lanzi wrote:Direi che l'unica cosa possibile è guardare il codice compilato e la procedura che l'ha generato.

Puoi farci vedere il codice e la procedura nel progetto in qualche modo?




Ti avevo girato del codice, ho aggiornato a inde 21.0.81.00 rev.14 ma la differenza tra debug e non debug continua a manifestarsi
Altro esempio di codice sorgente:

public void DocFatturaNew.impostaTipoDocumento()
{
if (Preavviso)
{
TipoDocumento = "PREAVVISO DI FATTURA"
return
}
//
// DICITURA TIPO DOCUMENTO DA TIPO FATTURA
if (not(FattFinale))
{
TipoDocumento = Mtipofattura.TipoDocumento1
}
else
{
TipoDocumento = Mtipofattura.TipoDocumento2
}

// SE SPECIFICATO TIPO DOCUMENTO SE NON GIA PRESENTE DA TIPOFATTURA (CARICATO DA SESSIONE)
if (isNull(TipoDocumento))
{
if (length(Gesap.Sessione.PredefTipoDoc) > 0)
{
TipoDocumento = Gesap.Sessione.PredefTipoDoc
}
else
{
// SE ERA PREAVVI LO AVEVO GIA IMPOSTATO
TipoDocumento = "FATTURA"
}
}
return
}

Compilazione senza debug genera errore:

Descrizione: Errore durante la compilazione di una risorsa necessaria per soddisfare la richiesta. Rivedere i dettagli relativi all'errore e modificare in modo appropriato il codice sorgente.

Messaggio di errore del compilatore: CS0161: 'DocFatturaNew.impostaTipoDocumento()': non tutti i percorsi di codice restituiscono un valore

public virtual int impostaTipoDocumento ()
{
StringBuilder SQL = new StringBuilder();
int TransCount = 0;
int ReturnStatus = 0;
IDCachedRowSet QV;

try
{
TransCount = 0;
//
// imposta Tipo Documento Body
// Corpo Procedura
//
if (getPREAVVISO().booleanValue())
{
setTIPODOCUMENT((new IDVariant("PREAVVISO DI FATTURA")));
return 0;
}
//
// DICITURA TIPO DOCUMENTO DA TIPO FATTURA
//
if (!(getFATTFINALE().booleanValue()))
{
setTIPODOCUMENT(MTIPOFATTURA.getTIPODOCUMEN1());
}
else
{
setTIPODOCUMENT(MTIPOFATTURA.getTIPODOCUMEN2());
}
//
// SE SPECIFICATO TIPO DOCUMENTO SE NON GIA PRESENTE DA
// TIPOFATTURA (CARICATO DA SESSIONE)
//
if (IDL.IsNull(getTIPODOCUMENT()))
{
if (IDL.Length(IMDB.Value(IMDBDef1.TBL_SESSIONE, IMDBDef1.FLD_SESSIONE_PRETIPDONOOG, 0)).compareTo((new IDVariant(0)), true)>0)
{
setTIPODOCUMENT(IMDB.Value(IMDBDef1.TBL_SESSIONE, IMDBDef1.FLD_SESSIONE_PRETIPDONOOG, 0));
}
else
{
//
// SE ERA PREAVVI LO AVEVO GIA IMPOSTATO
//
setTIPODOCUMENT((new IDVariant("FATTURA")));
}
}
}
catch (Exception _e)
{
MainFrm.ErrObj.ProcError ("DocFatturaNew", "impostaTipoDocumento", _e);
return -1;
}
}

La compilazione con debug invece non genera errori:

public virtual int impostaTipoDocumento ()
{
StringBuilder SQL = new StringBuilder();
int TransCount = 0;
int ReturnStatus = 0;
IDCachedRowSet QV;

try
{
TransCount = 0;

if (!MainFrm.DTTObj.EnterProc("9849D5AC-57D2-4E86-AE8A-07F8B514B2D4", "imposta Tipo Documento", "IMPOSTA IL TIPO DOCUMNETO DELLA FATTURA: PREAVVISO TIPODOC1 O TIPODOC2 DA TIPOFATTURA O DA PREDEFINITO\nDA USARE VERSO FINE CREAZIONE FT", 3, "Doc Fattura New")) return 0;
//
// imposta Tipo Documento Body
// Corpo Procedura
//
MainFrm.DTTObj.AddIf ("1FE7D01B-DC1E-496B-B424-E7B1A17773E5", "IF Preavviso", "");
MainFrm.DTTObj.AddToken ("1FE7D01B-DC1E-496B-B424-E7B1A17773E5", "188EE3D0-119D-47A4-88D8-BEA27B923BD0", 1376256, "Preavviso", getPREAVVISO().booleanValue());
if (getPREAVVISO().booleanValue())
{
MainFrm.DTTObj.EnterIf ("1FE7D01B-DC1E-496B-B424-E7B1A17773E5", "IF Preavviso", "");
MainFrm.DTTObj.AddAssign ("90482B65-1EBB-40CC-886C-17F5204C5298", "Tipo Documento := C\"PREAVVISO DI FATTURA\"", "", getTIPODOCUMENT());
setTIPODOCUMENT((new IDVariant("PREAVVISO DI FATTURA")));
MainFrm.DTTObj.AddAssignNewValue ("90482B65-1EBB-40CC-886C-17F5204C5298", "962D18BE-A3C9-40C9-899A-FE67E99DF561", getTIPODOCUMENT());
MainFrm.DTTObj.ExitProc ("9849D5AC-57D2-4E86-AE8A-07F8B514B2D4", "imposta Tipo Documento", "IMPOSTA IL TIPO DOCUMNETO DELLA FATTURA: PREAVVISO TIPODOC1 O TIPODOC2 DA TIPOFATTURA O DA PREDEFINITO\nDA USARE VERSO FINE CREAZIONE FT", 3, "Doc Fattura New");
return 0;
}
MainFrm.DTTObj.EndIfBlk ("1FE7D01B-DC1E-496B-B424-E7B1A17773E5");
//
// DICITURA TIPO DOCUMENTO DA TIPO FATTURA
//
MainFrm.DTTObj.AddIf ("24D38077-0AE0-4C43-9E17-EA3E5EAA932E", "IF not (Fatt Finale)", "DICITURA TIPO DOCUMENTO DA TIPO FATTURA");
MainFrm.DTTObj.AddToken ("24D38077-0AE0-4C43-9E17-EA3E5EAA932E", "8A442A2B-3B3F-4E08-9683-17D419887C15", 1376256, "Fatt Finale", getFATTFINALE().booleanValue());
if (!(getFATTFINALE().booleanValue()))
{
MainFrm.DTTObj.EnterIf ("24D38077-0AE0-4C43-9E17-EA3E5EAA932E", "IF not (Fatt Finale)", "DICITURA TIPO DOCUMENTO DA TIPO FATTURA");
MainFrm.DTTObj.AddAssign ("07AC8847-6456-4E9C-A984-ABB588B1066B", "Tipo Documento := Mtipofattura.Tipo Documento 1", "", getTIPODOCUMENT());
if (MTIPOFATTURA != null) MainFrm.DTTObj.AddToken ("07AC8847-6456-4E9C-A984-ABB588B1066B", "91DAD443-A796-435C-97F1-31D272AEA631", 1376256, "Mtipofattura.Tipo Documento 1", MTIPOFATTURA.getTIPODOCUMEN1());
setTIPODOCUMENT(MTIPOFATTURA.getTIPODOCUMEN1());
MainFrm.DTTObj.AddAssignNewValue ("07AC8847-6456-4E9C-A984-ABB588B1066B", "962D18BE-A3C9-40C9-899A-FE67E99DF561", getTIPODOCUMENT());
}
else if (0==0)
{
MainFrm.DTTObj.EnterElse ("2530F22E-07CF-4F0D-8597-710E0E2C1278", "ELSE", "", "24D38077-0AE0-4C43-9E17-EA3E5EAA932E");
MainFrm.DTTObj.AddAssign ("0346A756-15C3-4FAB-99DB-B430DEA1367A", "Tipo Documento := Mtipofattura.Tipo Documento 2", "", getTIPODOCUMENT());
if (MTIPOFATTURA != null) MainFrm.DTTObj.AddToken ("0346A756-15C3-4FAB-99DB-B430DEA1367A", "91DAD443-A796-435C-97F1-31D272AEA631", 1376256, "Mtipofattura.Tipo Documento 2", MTIPOFATTURA.getTIPODOCUMEN2());
setTIPODOCUMENT(MTIPOFATTURA.getTIPODOCUMEN2());
MainFrm.DTTObj.AddAssignNewValue ("0346A756-15C3-4FAB-99DB-B430DEA1367A", "962D18BE-A3C9-40C9-899A-FE67E99DF561", getTIPODOCUMENT());
}
MainFrm.DTTObj.EndIfBlk ("24D38077-0AE0-4C43-9E17-EA3E5EAA932E");
//
// SE SPECIFICATO TIPO DOCUMENTO SE NON GIA PRESENTE DA
// TIPOFATTURA (CARICATO DA SESSIONE)
//
MainFrm.DTTObj.AddIf ("554D0A17-ACB5-456D-9C44-B2E2DE8FE7CB", "IF Is Null (Tipo Documento)", "SE SPECIFICATO TIPO DOCUMENTO SE NON GIA PRESENTE DA TIPOFATTURA (CARICATO DA SESSIONE)");
MainFrm.DTTObj.AddToken ("554D0A17-ACB5-456D-9C44-B2E2DE8FE7CB", "962D18BE-A3C9-40C9-899A-FE67E99DF561", 1376256, "Tipo Documento", getTIPODOCUMENT());
if (IDL.IsNull(getTIPODOCUMENT()))
{
MainFrm.DTTObj.EnterIf ("554D0A17-ACB5-456D-9C44-B2E2DE8FE7CB", "IF Is Null (Tipo Documento)", "SE SPECIFICATO TIPO DOCUMENTO SE NON GIA PRESENTE DA TIPOFATTURA (CARICATO DA SESSIONE)");
MainFrm.DTTObj.AddIf ("BCBBF297-17DF-4359-A5BC-C9798803B705", "IF Length (Predef Tipo Doc Nome Oggetto) > 0", "");
MainFrm.DTTObj.AddToken ("BCBBF297-17DF-4359-A5BC-C9798803B705", "42329072-67DC-4F33-9050-8F00E04CBE88", 327680, "Predef Tipo Doc", IMDB.Value(IMDBDef1.TBL_SESSIONE, IMDBDef1.FLD_SESSIONE_PRETIPDONOOG, 0));
if (IDL.Length(IMDB.Value(IMDBDef1.TBL_SESSIONE, IMDBDef1.FLD_SESSIONE_PRETIPDONOOG, 0)).compareTo((new IDVariant(0)), true)>0)
{
MainFrm.DTTObj.EnterIf ("BCBBF297-17DF-4359-A5BC-C9798803B705", "IF Length (Predef Tipo Doc Nome Oggetto) > 0", "");
MainFrm.DTTObj.AddAssign ("B7FA16CD-5D7A-486F-846F-B8D5FC126E40", "Tipo Documento := Predef Tipo Doc Nome Oggetto", "", getTIPODOCUMENT());
MainFrm.DTTObj.AddToken ("B7FA16CD-5D7A-486F-846F-B8D5FC126E40", "42329072-67DC-4F33-9050-8F00E04CBE88", 327680, "Predef Tipo Doc", IMDB.Value(IMDBDef1.TBL_SESSIONE, IMDBDef1.FLD_SESSIONE_PRETIPDONOOG, 0));
setTIPODOCUMENT(IMDB.Value(IMDBDef1.TBL_SESSIONE, IMDBDef1.FLD_SESSIONE_PRETIPDONOOG, 0));
MainFrm.DTTObj.AddAssignNewValue ("B7FA16CD-5D7A-486F-846F-B8D5FC126E40", "962D18BE-A3C9-40C9-899A-FE67E99DF561", getTIPODOCUMENT());
}
else if (0==0)
{
MainFrm.DTTObj.EnterElse ("52EEA504-D5B4-4E9E-9D68-F79E3FDBE3E5", "ELSE", "", "BCBBF297-17DF-4359-A5BC-C9798803B705");
//
// SE ERA PREAVVI LO AVEVO GIA IMPOSTATO
//
MainFrm.DTTObj.AddAssign ("46B2EEE1-4E18-46EA-B8AC-111712BFB7F7", "Tipo Documento := C\"FATTURA\"", "SE ERA PREAVVI LO AVEVO GIA IMPOSTATO", getTIPODOCUMENT());
setTIPODOCUMENT((new IDVariant("FATTURA")));
MainFrm.DTTObj.AddAssignNewValue ("46B2EEE1-4E18-46EA-B8AC-111712BFB7F7", "962D18BE-A3C9-40C9-899A-FE67E99DF561", getTIPODOCUMENT());
}
MainFrm.DTTObj.EndIfBlk ("BCBBF297-17DF-4359-A5BC-C9798803B705");
}
MainFrm.DTTObj.EndIfBlk ("554D0A17-ACB5-456D-9C44-B2E2DE8FE7CB");
MainFrm.DTTObj.ExitProc("9849D5AC-57D2-4E86-AE8A-07F8B514B2D4", "imposta Tipo Documento", "IMPOSTA IL TIPO DOCUMNETO DELLA FATTURA: PREAVVISO TIPODOC1 O TIPODOC2 DA TIPOFATTURA O DA PREDEFINITO\nDA USARE VERSO FINE CREAZIONE FT", 3, "Doc Fattura New");
return 0;
}
catch (Exception _e)
{
MainFrm.DTTObj.AddException("9849D5AC-57D2-4E86-AE8A-07F8B514B2D4", "imposta Tipo Documento", "IMPOSTA IL TIPO DOCUMNETO DELLA FATTURA: PREAVVISO TIPODOC1 O TIPODOC2 DA TIPOFATTURA O DA PREDEFINITO\nDA USARE VERSO FINE CREAZIONE FT", _e);
MainFrm.ErrObj.ProcError ("DocFatturaNew", "impostaTipoDocumento", _e);
MainFrm.DTTObj.ExitProc("9849D5AC-57D2-4E86-AE8A-07F8B514B2D4", "imposta Tipo Documento", "IMPOSTA IL TIPO DOCUMNETO DELLA FATTURA: PREAVVISO TIPODOC1 O TIPODOC2 DA TIPOFATTURA O DA PREDEFINITO\nDA USARE VERSO FINE CREAZIONE FT", 3, "Doc Fattura New");
return -1;
}
}
User avatar
zpj61
 
Posts: 767
Joined: 20 November 2015, 8:20
Location: Bassano del Grappa


Return to Tips & Tricks - Foundation

Who is online

Users browsing this forum: Google [Bot] and 24 guests

cron