[vastaus aiempaan viestiin]
Kirjoittaja: | Seppo Mustonen |
---|---|
Sähköposti: | - |
Päiväys: | 26.9.2007 15:35 |
Päättelen, että Petri on ohjelmoimassa uutta C-kielistä ohjelmaa ja haluaa siinä perustaa Survon datatiedostoja. Normaalissa Survon käytössä tähän riittää FILE CREATE -komento eikä mitään omaa C-ohjelmointia tarvita. Niinpä kaikki mitä seuraavassa esitän, koskee vain niitä, jotka haluavat itse laatia C-kielisiä ohjelmia Survoon. Survon datatiedoston luonti tapahtuu todella fi_create() -funktiolla ja pieni esimerkkiohjelma (SURVO MM -ohjelma _FCREATE.EXE), joka käynnistyisi Survossa komennolla FCREATE, näyttää, miten tämä tapahtuu. Koska arvelen, ettei Petrille lopulta riitä pelkkä tyhjän tiedoston luominen, vaan hän tarvitsee myös keinot tallettaa itse dataa tuohon tiedostoon, tarkastelen tilannetta, jossa paitsi perustetaan 3 muuttujan tiedosto TEST, siihen talletetaan myös pari havaintoa niin, että tiedostosta TEST löytyvät FCREATE-komennon jälkeen seuraavat tiedot: *FILE DEL TEST *FCREATE *FILE LOAD TEST *DATA TEST*,A,B,C C Name Height Weight A John 175 70 B Peter 192 91 Kyseessä ei siis ole mikään yleinen tiedoston luontiin ja tietojen talletukseen tarkoitettu ohjelma, vaan ainoastaan pieni prototyyppi, jota on helppo yleistää. Ohjelman listaus on seuraava: #include <survo.h> #include <survoext.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <stdio.h> #include <survodat.h> SURVO_DATA_FILE dat; char **specs; void main(int argc, char *argv[]) { int i; double value; int len=32; // tietueen pituus int m1=5; // muuttujien maksimimäärä int m=3; // muuttujien nykyinen määrä long n=0L; // havaintojen lukumäärä int f=64; // muuttujan nimen maksimipituus int extra=7; // muuttujan attribuuttien lukumäärä int textn=0; // mahdollisten kommenttirivien lukumäärä int textlen=0; // kommenttirivin pituus // char *text[]; // osoittimet kommenttiriveille (tässä NULL) // Muuttujien nimet, pituudet ja attribuutit: // Ensimmäinen on 16 tavun merkkijono, // muut 2 tavun numeerisia muuttujia. char *varname[]={"Name ","Height ","Weight "}; char *vartype[]={"SA- ","2A- ","2A- "}; int varlen[3]={ 16, 2, 2 }; s_init(argv[1]); // Tiedoston perustaminen fi_create("TEST",len,m1,m,n,f,extra,textn,textlen,NULL, varname,varlen,vartype); // Tiedosto on luotu. // Tiedoston avaaminen uusien havaintojen tallettamiseksi i=fi_open("TEST",&dat); if (i<0) return; // Ensimmäisen havainnon talletus ++dat.n; // Lisää havaintojen lukumäärää fi_alpha_save(&dat,dat.n,0,"John"); value=175.0; fi_save(&dat,dat.n,1,&value); value=70.0; fi_save(&dat,dat.n,2,&value); // Toisen havainnon talletus ++dat.n; fi_alpha_save(&dat,dat.n,0,"Peter"); value=192.0; fi_save(&dat,dat.n,1,&value); value=91.0; fi_save(&dat,dat.n,2,&value); // Todellisuudessa havaintoja talletetaan poimimalla // niitä jostain lähteestä (esim. tekstitiedostosta), // jolloin edellä olevien erillisten talletuskäskyjen // sijaan kaikki tapahtuu esim. while-loopissa. // Havaintojen lukumäärän dat.n talletus tiedostoon fi_increase_n(&dat,0); // Tiedosto suljetaan fi_close(&dat); sur_print("\nSurvo data file TEST created!"); WAIT; s_end(argv[1]); // Tämä ei välttämätön, koska mitään ei kirjoiteta // toimituskenttään. }
Vastaukset: |
---|
Survo-keskustelupalstan (2001-2013) viestit arkistoitiin aika ajoin sukrolla, joka automaattisesti rakensi viesteistä (yli 1600 kpl) HTML-muotoisen sivukokonaisuuden. Vuoden 2013 alusta Survo-keskustelua on jatkettu entistäkin aktiivisemmin osoitteessa forum.survo.fi. Tervetuloa mukaan!