Newsgroup: it.comp.os.linux.development
Titolo: Linux e D-ISAM (bwaaaaaaaaaaaaa!!!!!)

Ciao a tutti di nuovo... anche durante le feste c'abbiamo da sbatte'
la testa co'sti programmi... veniamo al dunque.
Stiamo completando il porting del famoso (per chi mi lesse sul vecchio
it.comp.linux.development un po' di tempo fa) pacchetto gestionale
scritto in origine per SCO. A questo proposito avrei due domande, non
correlate ma entrambe importanti per proseguire.
1) I database dei programmi sono gestiti tramite le librerie D-ISAM
   di Informix. Da prove fatte in via preliminare mi sono accorto che
   la scrittura di un nuovo record avveniva regolarmente, mentre la
   lettura e la riscrittura di record esistenti non avveniva. Provando
   a scrivere un record esistente veniva in realta' scritto un nuovo
   record, e provando a leggerne uno il programma riceveva un msg di
   errore di record non esistente. A questo proposito volevo sapere se
   c'e' qualcuno che ha gia' avuto modo di portare sotto Linux programmi
   D-ISAM, o che mi sappia indirizzare verso informazioni utili (ho gia'
   cercato "LINUX and D-ISAM" su Deja e ho trovato solo alcuni post in
   cui si trattavano aspetti commerciali, e anche sul web non ho avuto
   miglior fortuna).
2) Per verificare la correttezza delle modifiche apportate alla libreria
   di base del pacchetto (portata ora sotto ncurses) ho scritto il prg
   seguente, per testare alcune delle funzioni comuni ai vari programmi:
#include <std.h> ______ /* Contengono definizioni di grandezze e macro */
#include <extdef.h>     /* usate pesantemente                          */
#include <curses.h>
#include "prova.rec"              /* Dovrebbe essere la struttura dati */
         struct prova rpro = NIL; /* manipola un db molto elementare   */
         int lpro = 0;            /* - Non ancora implementata causa   */
         int fpro = 0;            /* le difficolta' di cui al punto 1) */
char c = 0;
extern WINDOW *msgwin;
extern WINDOW *p_wind;   /* Inizializzate dalla raw_mode() */
extern WINDOW *mainwin;
int main(int argc, char *argv[])
{
       printf("\n\nProgramma di prova per ncurses\n\n");
       raw_mode(YES);     /* Funzione che racchiude le inizial. */
       wclear(mainwin);
       wrefresh(mainwin);
       /* Dovrebbe stampare una cornicetta in alto con le stringhe passate
*/
       bord("Programma di prova", "Ditta di prova", "prova-01-rel4.1");
       wrefresh(mainwin);
       /* Stampa di una stringa in una posizione arbitraria */
       mvwaddstr(p_wind, 10, 10, "***********************");
       wrefresh(mainwin);
       /* Messaggio in basso che attende la pressione di un tasto */
       msg("OK?", &c);
       wrefresh(mainwin);
       /* In pratica un wrapper per endwin() */
       raw_mode(NO);
  exit(0);
}
Il programma compila senza errori, esegue senza errori, ma a video non
fa niente! Il bello e' che uno dei programmi del pacchetto, dove avevo
gia' messo le mani, si comporta invece correttamente ed ha la stessa
struttura...

    seguente, per testare alcune delle funzioni comuni ai vari programmi:
Qui invece e' tutto a posto, stamattina senza aver fatto nulla di nuovo ho
riprovato a lanciarlo e (MIRACOLO) la schermata e' apparsa.
Auguri :)
--

