Datan tallentaminen, lataaminen ja siirtäminen

Koko: px
Aloita esitys sivulta:

Download "Datan tallentaminen, lataaminen ja siirtäminen"

Transkriptio

1 Datan tallentaminen, lataaminen ja siirtäminen OSA VI 547 LUKU LUKU Datan tallentaminen, lataaminen ja siirtäminen Dokumentin tietojen tallentaminen ja lataaminen Tiedostojen luominen, lukeminen ja kirjoittaminen Tiedon siirtäminen leikepöydälle ja leikepöydältä

2 548 Tiedostojen käsittely valintaikkunasovelluksissa Valintaikkunasovelluksen eivät tavallisesti tarvitse serialisoinnin käyttöä - tavallisesti riittää CFilen tukema suora tiedostojen käsittely (josta lisää myöhemmin tässä luvussa). Valintaikkunsovellukset voivat kuitenkin käyttää serialisointia CArchive-luokan kautta. Tätä varten valintaikkunaan joudutaan toteuttamaan oma käyttöliittymä serialisoinnin aloittamista varten. Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen Serialisoinnin käyttö Serialisointi on tekniikka, jolla sovelluksen data saadaan peräkkäiseksi luetteloksi dataelementtejä, sekä saadaan ne tallennettua levylle tai siirrettyä toiseen ohjelmaan. Ohjelman ladatessa uudelleen serialisoidun tiedon tai hyväksyessä toiselta ohjelmalta tulevan tiedon, se voi lukea nämä dataelementit peräkkäin ja muodostaa niistä rakenteisia ja vuorovaikutteisia muistiolioita. SDI- ja MDI-sovellusrungoissa saadaan käyttöön serialisointi ja tiedostonkäsittely joudut ainoastaan tekemään sovelluksesi datan itsensä serialisoivaksi sovellusrungon sitä pyytäessä. Tiedostoja käsittelevän SDI-sovellusrungon luominen Luodaksesi tavallisen dataolioita luovan, käyttävän ja CDocumentluokasta peritystä luokasta serialisoivan SDI-sovelluksen voit käyttää tuttua AppWizardin New Project toimintoa. Joudut huomioimaan serialisoinnin uutta projektia luotaessa ainoastaan dokumenttimallin tekstiasetusten kohdalla (Document Template String). Nämä tekstiasetukset saadaan tehtyä MFC AppWizardin vaiheessa Step 4 napauttamalla Advanced-painiketta. Tällöin saadaan esiin Advanced Options ikkuna (kuva 23.1), josta voit asettaa dokumenttimallikohtaiset tekstitiedot: File extension voit määrittää tiedostotunnisteen muuttamalla File extension ruudun sisältöä. Tähän kelpaavat kaikki aakkosnumeeriset merkit. Sovellusrungon tallettaessa dokumenttisi tiedostoksi käytetään sen nimessä tätä tunnistetta. Sovellusrungon tiedostosuodattimet Advanced Options -valintaikkunan valinnat tallennetaan IDR_MAINFRAMEmerkkijonoresurssiin. Voit muuttaa näitä asetuksia projektin luomisen jälkeen muokkaamalla ResourceView-sivulta löytyvää IDR_MAINFRAME-merkkijonoresurssia (String Table). File type ID Voit määrittää järjestelmärekisteriä varten dokumenttityypin, jotta sovellukset voisivat liittää sovelluksesi tämän tyyppisiin tiedostoihin. Tavallisesti tähän jätetään sovelluksen nimeen perustuva oletusarvo. Näin sovelluksesi saadaan käynnistymään automaattisesti ja lataamaan tiedosto, jota kaksoisnapautetaan työpöydällä tai Resurssienhallinnassa. Filter name Voit määrittää tiedostotunnisteellesi oletussuotimen esimerkiksi tiedoston avaamisikkunassa käytettäväksi.

3 Datan tallentaminen, lataaminen ja siirtäminen File type name Tämä on File type ID tunnisteeseen liittyvä selkokielisempi nimi käytettäväksi muiden sovelluksien kuvatessa dokumenttityyppiäsi. Näitä rekisteröityjä nimiä saat esiin työpöydän pikavalikon Uusi-valikosta (New). Tätä rekisteröintiä käsitellään myöhemmin tässä luvussa. File new name Voit määrittää oletusnimen tiedostoille, jotka tallennetaan nimettöminä. Tee siis serialisoinnin havainnollistamista varten AppWizardilla uusi SDI-projekti nimeltään Persist. Projektia luodessa hyväksy AppWizardin oletusasetukset vaiheissa Step 1 Step 3 Next-painiketta napauttamalla. Napauta vaiheessa Step 4 Advanced-painiketta, jolloin saat esiin Advanced Options ikkunan. Aseta Persist-esimerkin tiedostotunnisteeksi (File extension) blb, jolloin sovelluksen luomista tiedostoista tulee.blb-päätteisiä (kuva 23.1). OSA VI LUKU KUVA 23.1 Tiedostotyyppisuotimen asettaminen Advanced Options ikkunassa. KATSO MYÖS Lisätietoja SDI-sovellusten luomisesta luvusta 12. Merkkijonoresurssien muokkaaminen luvussa 2. Serialisoitavien dataolioiden luominen Kaikilla MFC:n CObject-luokasta periytyvillä luokilla on Serialize()-virtuaalifunktio, jonka voit korvata sovelluksesi luokassa

4 550 Siirrä tietoa verkon kautta CArchiven avulla Voit käyttää CArchive-luokkaa yhdessä CSocket- ja CSocketFile-luokkien kanssa. Näin voit siirtää tietoa lähiverkon koneesta toiseen tai jopa Internetissä. Serialisointiskeemat ja tietokantaskeemat Samasta käsitteestä huolimatta serialisointiskeemat ovat hyvin erilaisia tietokantaskeemoista. Tietokantaskeemoissa on tieto tietokannan taulujen kentistä ja serialisointiskeemoissa ainoastaan luokan tyypistä ja versiosta. Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen ja pääset tallettamaan olion jäsenmuuttujia levytiedostoon. Kun käyttäjä valitsee SDI- tai MDI-sovelluksessa File Save tai File Open (Tiedosto Tallenna, Tiedosto Avaa), sovellusrunko kutsuu automaattisesti dokumentin Serialize()-funktiota dokumentin dataolioiden tallentamista tai lataamista varten. MFC:n CArchive-luokka vastaa CObjectista johdettujen olioiden serialisoimisesta CArchive-luokkaan upotettuun tiedostojäsenmuuttujaan (tai muuttujasta). Sovellusrunko muodostaa CArchive-olion ja liittää sen tiedostoon, jota käyttäjä on lataamassa tai tallentamassa. Voit korvata dokumenttiluokkasi (joka on johdettu CObjectista) Serialize()-funktion. Tallennettaessa tai ladattaessa dokumenttisi korvatulle Serialize()- funktiolle välitetään parametri ar, joka on sovellusrungon luoma CArchive-olio. Tähän CArchive-olioon sisältyy upotettu tiedostojäsenmuuttuja, joka on liitetty tallennettavaan tai ladattavaan levytiedostoon. Dokumenttiluokkasi Serialize()-funktiosta joudut kutsumaan sovelluksesi kaikkien olioiden Serialize()-funktioita ja välittämään sille CArchive-olion (ar), jonka dokumenttisi Serialize() sai sovellusrungolta. Kun dokumentin tietoja tallennetaan, kunkin serialisoitavan olion data luetaan ja se tallennetaan CArchive-olioon liittyvään tiedostoon. Kun dokumentin tietoja ladataan, data luetaan CArchive-olioon liittyvästä levytiedostosta ja asetetaan takaisin dataolioihin kutsumalla olioiden omia Serialize()-funktioita. Serialisoinnin luomaa levytiedostoa kutsutaan serialisoiduksi arkistotiedostoksi (serialized archive file) ja siihen on tallennettu jokaisen sovelluksen olion data sekä olion tyyppi ja versiotiedot. Versionumeron avulla voit pitää yllä tietoa olion mahdollisesti muuttuvasta rakenteesta sovelluksen kehittyessä. Versio- ja tyyppitietoja nimitetään usein skeemaksi (schema). Voit johtaa sovelluksesi luokat CObjectista ja käyttää serialisointitoimintoja lisäämällä luokan määrittelyyn DECLARE_SERIAL-makron ja vastaavan IMPLEMENT_SERIAL-makron sen toteutuskoodiin. Nämä makrot korvaavat tavalliset CObjectista johdetuissa luokissa käytetyt DECLARE_DYNCREATE- ja IMPLEMENT_DYNCREATE-makrot lisäten serialisointia nopeuttavaa koodia.

5 Datan tallentaminen, lataaminen ja siirtäminen Serialisoitavan luokan määrittely Mikäli sovelluksesi tarvitsee erityisiä dataolioita, joudut luomaan omat sovelluskohtaiset luokkasi tuon datan kuvaamiseen ja käsittelyyn. Tämän jälkeen voit lisätä uuden luokkasi määrittelyyn serialisointimakrot ja toiminnot kunkin olion datan tallentamiseksi ja lataamiseksi. Voit luoda uuden header-tiedoston (.h) ja toteutustiedoston (.cpp) luokan määrittelylle ja toteutuskoodille. OSA VI LUKU Uuden header-tiedoston luominen luokan määrittelylle 1. Valitse Developer Studion File-valikosta New aivan kuten uutta projektia luotaessa. 2. Valitse New-valintaikkunan Files-välilehdellä C/C++ Header File uuden tiedoston luomiseksi. 3. Anna uudelle header-tiedostolle nimi File Name ruutuun (tässä blob.h). 4. Jos Add to Project valinta on asetettu (kuten oletuksena on), uusi tyhjä header-tiedosto lisätään projektiin automaattisesti ja se näytetään editorin ikkunassa. Varmista siis, että valinta on rastitettu. 5. Lisää uusi header-tiedosto projektiin ja aloita sen muokkaus valitsemalla OK. Listauksessa 23.1 esitetään yksinkertaisen serialisoitavan olion määrittely. Tämä luokka on normaali CObjectista johdettu luokka, johon DECLARE_SERIAL-makro lisää MFC:n serialisoinnin vaatiman osan. LISTAUS 23.1 LST23_1.CPP blob.h, Blob-dataolion luokkamäärittely 1 // ** Ensure the class isn't declared twice 2 #ifndef _BLOB_H 3 #define _BLOB_H 4 5 // ** Derive a CBlob class from CObject 6 class CBlob : public CObject 7 { 8 // ** Include the Serialization functions 9 DECLARE_SERIAL(CBlob); public: 12 1 DECLARE_SERIAL-makro tarjoaa avattuna kaiken sovellusrungon serialisoinnille tarvittavan tuen.

6 552 2 Yhden Blob-olion (täplän) piirtämiseen tarvittavat attribuutit. Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen 13 // ** Declare two constructors 14 CBlob(); 15 CBlob(CPoint ptposition); // ** Declare a drawing function 18 void Draw(CDC* pdc); // ** Declare the attributes 21 CPoint m_ptposition; 2 22 COLORREF m_crcolor; 23 int m_nsize; 24 unsigned m_nshape; 25 }; #endif // _BLOB_H Riviltä 6 nähdään, että uusi CBlob-luokka on johdettu CObjectkantaluokasta. Kaikki MFC-yhteensopivat luokat kannattaa johtaa CObjectista, koska CObject tarjoaa yleisenä kantaluokkana muitakin hyödyllisiä MFC-ominaisuuksia, kuten ajonaikaiset luokkatiedot. Näiden tietojen avulla MFC voi päätellä, mihin luokkaan olio kuuluu. Nämä tiedot on tallennettu olion datan yhteyteen, joten tietoja ladattaessa voidaan luoda myös oikeanlaiset oliot. Rivin 9 DECLARE_SERIAL-makro lisää serialisoinnin toiminnan vaatiman koodin. Riveillä 14 ja 15 on määritelty kaksi muodostinta. Rivin 14 versio toimii ilman parametrejä ja sitä sovellusrunko käyttää olioiden luomiseen lennossa ladattaessa tietoja levyltä. Rivin 15 versiolla luodaan olio ja sen koordinaattijäsen alustetaan automaattisesti CPoint-parametristä. Tämä helpottaa olioiden luomista hiiren napautuksen perusteella, kuten tulet myöhemmin huomaamaan. Rivillä 18 määritellään Draw()-funktio, jonka toteutuskoodi löytyy.cpp-tiedostosta. Rivien 21 ja 23 muuttujat joudutaan serialisoimaan oliota ladattaessa tai tallennettaessa. Serialisoitavan luokan toteutus Määriteltyäsi uuden luokan joudut kirjoittamaan vastaavan toteutuskoodin luokan määrittelyssä esitellyn datan muodostamiseen (alustamiseen) ja muokkaamiseen.

7 Datan tallentaminen, lataaminen ja siirtäminen OSA VI LUKU Uuden.cpp-tiedoston luominen luokan toteuttamiseen 1. Valitse Developer Studion File-valikosta New aivan kuten uutta projektia luotaessa. 2. Valitse New-valintaikkunan Files-välilehdellä C/C++ Implementation File uuden tiedoston luomiseksi. 3. Anna uudelle toteutustiedostolle nimi File Name ruutuun (tässä blob.cpp). 4. Jos Add to Project valinta on asetettu (kuten oletuksena on) uusi tyhjä toteutus-tiedosto lisätään projektiin automaattisesti ja se näytetään editorin ikkunassa. Varmista siis, että valinta on rastitettu. 5. Lisää uusi toteutustiedosto projektiin ja aloita sen muokkaus valitsemalla OK. Serialisoitavalla luokalla on oltava yleinen - eli parametriton muodostin. Tällä muodostimella oliot luodaan levytiedostosta serialisoitaessa. MFC sovellusrunko voi tällöin kutsua kaiken tyyppisten olioiden yleistä muodostinta niiden luomiseksi ladattaessa tietoja tiedostosta. Yleisellä muodostimella sovellusrunko voi luoda minkä tahansa serialisoitavan luokan ilmentymän ja luottaa sitten sovelluksen omien Serialize()-funktioiden toteutusten alustavan uuden olion jäsenmuuttujien arvot. Voit lisäksi toteuttaa muita muodostimia, joilla voit luoda olioita halutuin alkutiedoin. Jokaisen serialisoitavan olion toteutuskoodissasi tulee olla myös IMPLEMENT_SERIAL-makro. Tämä makro tarvitsee kolme parametriä. Ensimmäinen on itse luokan nimi, toinen sen kantaluokka ja kolmas (wschema) on versionumeroa kuvaava UINT-arvo. Jos lisäät luokkaasi uusia jäsenmuuttujia ja haluat serialisoida ne, voit kasvattaa versionumeroa ja valinnaisesti jopa tarkistaa sen, jos haluat säilyttää yhteensopivuuden vanhempiin serialisointitiedostoihin. CBlob-esimerkkiluokan toteutus on esitetty listauksessa Esimerkkitoteutus esittää IMPLEMENT_SERIAL-makron ja useita muodostimia sekä koodin, jolla olio saadaan piirtämään itsensä. Työskentely Visual Source Safen kanssa Jos käytetät integroitua versionhallintajärjestelmää, kuten Visual Source Safea, sinulta kysytään, haluatko lisätä uuden lähdekooditiedoston Source Safe -projektiin (mikä kannattaa tehdä). Versionhallintaohjelmiston avulla voidaan seurata eri ohjelmaversioita ja muutoksia lähdekooditiedostoissa, jolloin aiempaan versioon palaaminen tulee mahdolliseksi. Tämä on erityisen hyödyllistä, kun samassa projektissa työskentelee useita ohjelmoijia, koska versionhallintaohjelmisto estää saman lähdekooditiedoston muuttamisen yhtäaikaa estäen tehtyjen muutosten päällekirjoittamisen. Versioiden hallitseminen Jos teet kaupallisia serialisointia käyttäviä sovelluksia, on hyvin tärkeää ylläpitää jokaisen eri tiedoston/olion skeemanumeroa niiden sovittamiseksi yhteen vanhempien versioiden kanssa. Muussa tapauksessa saatat joutua hämmentävään tilanteeseen, kun asiakkaan ohjelmaversiota päivitettäessä sovelluksen kaikki vanhat datatiedostot tulevat ylikirjoitetuiksi.

8 554 Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen LISTAUS 23.2 LST23_2.CPP blob.cpp, Blob-dataolion luokkatoteutus 1 // ** include the standard header 2 #include "stdafx.h" 3 #include "blob.h" 4 // ** Add the implementation for serialization 5 IMPLEMENT_SERIAL(CBlob,CObject,1) 6 // ** Implement the default constructor 7 CBlob::CBlob() 8 { 9 } 1 Tällä muodostimella voidaan täpläolio luoda hiiren napautuspaikkaan ja asettaa sen arvot satunnaisiksi. 2 Draw()-funktiolla jokainen täpläolio voi piirtää itsensä saatuaan piirtopintaosoittimen näkymän OnDraw()-funktiolta. 10 // ** Implement the position constructor 11 CBlob::CBlob(CPoint ptposition) 1 12 { 13 // ** Set the random seed 14 srand(gettickcount()); 15 // ** Set the position to the specified position 16 m_ptposition = ptposition; 17 // ** Set the attributes to random values 18 m_crcolor= RGB(rand()%255,rand()%255,rand()%255); 19 m_nsize = 10 + rand()%30; 20 m_nshape = rand(); 21 } 22 void CBlob::Draw(CDC* pdc) 2 23 { 24 // ** Create and select a colored brush 25 CBrush brdraw(m_crcolor); 26 CBrush* poldbrush = pdc->selectobject(&brdraw); 27 CPen* poldpen = 28 (CPen*)pDC->SelectStockObject(NULL_PEN); 29 // ** See the random generator to the shape 30 srand(m_nshape); 31 for(int n=0;n<3;n++) 32 { 33 // ** Set the blob position and random shift 34 CPoint ptblob(m_ptposition); 35 ptblob += CPoint(rand()%m_nSize,rand()%m_nSize); 36 // ** Create and draw a rectangle to the blob size 37 CRect rcblob(ptblob,ptblob); 38 rcblob.inflaterect(m_nsize,m_nsize); 39 pdc->ellipse(rcblob); 40 } 41

9 Datan tallentaminen, lataaminen ja siirtäminen OSA VI LUKU // ** Reselect the GDI Objects 43 pdc->selectobject(poldbrush); 44 pdc->selectobject(poldpen); 45 } Rivien 2 ja 3 #include-lauseilla määrätään kääntäjä ottamaan mukaan luokan ja MFC-luokkien määrittely. Rivin 5 IMPLEMENT_SERIAL()- makro täydentää luokan määrittelyssä käytetyn DECLARE_SERIAL()- makron. Oletusmuodostin määritellään rivillä 7. Tiedostoa ladattaessa serialisointitoiminto voi luoda nämä oliot oletusmuodostimen avulla ja alustaa ilmentymät tiedostosta luetulla datalla. Oma muodostin määritellään rivillä 11 olioiden luomiseksi hiiren napautuspaikan ja satunnaisten attribuuttiarvojen mukaisesti. Riviltä 22 alkava Draw()-funktio voi sitten piirtää nämä oliot parametrinä saamaansa näkymän piirtopintaosoitinta käyttäen. Dokumentin tietojen säilyttäminen ajon aikana Määriteltyäsi sovelluksesi luokat joudut luomaan luokista ilmentymiä (eli olioita) edustamaan käyttäjän tietoja yksittäisinä olioina. Jos luot olioita, joudut pitämään yllä tietoja niistä voidaksesi muokata dataa, ladata ja tallentaa niitä ja lopuksi tuhota ne. Kun lataat tai tallennat dokumentin dataa, joudut käymään läpi kaikki tallennettavat tiedot ja serialisoimaan jokaisen olion kerrallaan. MFC-kirjastossa on luokkia, jotka helpottavat näiden olioiden seuraamista ja tukevat serialisointia, joten ne käyvät läpi automaattisesti ilmentymät. Eräs näistä on CObArray-luokka, joka kuuluu MFC:n kokoelmaluokkiin (collection). Kyseessä on kasvatettava taulukko, joka on suunniteltu CObjectista johdettujen luokkien tallentamiseen eli se saattaa sopia kaikille määrittämillesi dataolioille. Sen lisäksi luokka ymmärtää serialisointia ja auttaa dokumentin tietojen serialisoinnissa. Voit lisätä CObArray-olion CPersistDoc-dokumenttiluokan määrittelyyn //Attributes-kommentin ja public:-määrittelyn alle näin: // Attributes public: CObArray m_blobarray(); Tämä uusi m_blobarray-olio voi nyt säilyttää ja seurata CObjectista johdettuja luokkia (kuten CBlobia). Tyyppiturvallisten mallitaulukoiden käyttö CObArray ei ole tyyppiturvallinen, koska se hyväksyy mukisematta minkä tahansa CObjectista johdetun olion. Toisinaan tällainen toiminta on paikallaan, mutta joskus taulukkoon halutaan tallentaa ainoastaan tietyntyyppisiä olioita. Tyyppien käyttöön voidaan pakottaa useiden mallien, esimerkiksi CTypedPtrArray, käytöllä. Vääräntyyppisen olion lisäämisen yrittäminen antaa tällöin assertion failed -varoitussanoman.

10 556 Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen Olioiden säilyttämisen lisäksi dokumentti joutuu tuhoamaan ne käyttäjän sulkiessa sovelluksen. Voit toteuttaa tämän lisäämällä listauksen 23.3 funktion sekä vastaavan määrittelyn luokan määrittelyyn: void DeleteBlobs(); LISTAUS 23.3 LST23_3.CPP DeleteBlobs()-luokan toteutus ja käyttö kaikkien varattujen Blob-olioiden poistamiseksi 1 DeleteBlobs()-funktio käy läpi kaikki täplät ja tuhoaa olioilmentymän varaaman muistin ja tyhjentää lopuksi olioita sisältävän taulukon. 2 Uuden dokumentin on tuhottava vanhat täplät, koska SDI-sovellusrunko käyttää samaa dokumenttioliota uudelleen. 1 void CPersistDoc::DeleteBlobs() 1 2 { 3 // ** Delete the allocated blobs 4 for(int i=0;i<m_blobarray.getsize();i++) 5 delete m_blobarray.getat(i); 6 m_blobarray.removeall(); 7 } 8 CPersistDoc::~CPersistDoc() 9 { 10 DeleteBlobs(); 11 } 12 BOOL CPersistDoc::OnNewDocument() 13 { 14 if (!CDocument::OnNewDocument()) 15 return FALSE; 16 // TODO: add reinitialization code here 17 // (SDI documents will reuse this document) 18 DeleteBlobs(); 2 19 return TRUE; 20 } Tämän funktion toteutus on esitetty listauksen 23.3 riveillä 1 7. DeleteBlobs()-funktio käy läpi kaikki CObArrayn CBlob-oliot ja tuhoaa jokaisen kerrallaan. Tämän jälkeen itse taulukko nollataan kutsumalla sen RemoveAll()-funktiota. Kun itse dokumentti tuhotaan, kutsutaan dokumentin tuhoajafunktiota (destructor) ja se on oikea paikka kutsua käytettävien dataolioiden tuhoamisfunktioita (rivi 10). Käyttäjä voi toki luoda uuden dokumentin vielä vanhan ollessa avoinna ja tällöin sovellusrunko ottaa vanhan dokumentin uuteen käyttöön. Tässä tapauksessa dokumentissa sijaitsevat dataoliot joudutaan nollaamaan. Voit tehdä toimet CPersistDoc::OnNewDocument()-funktiossa kutsumalla

11 Datan tallentaminen, lataaminen ja siirtäminen DeleteBlobs()-funktiota, kuten rivillä 18 on tehty. OSA VI LUKU Olemme käsitelleet dataolioiden säilyttämisen ja tuhoamisen, mutta käyttäjälle tarvitaan myös keinot uusien olioiden luomiseksi ja dokumenttiin lisäämiseksi. Miten se tehdään, vaihtelee varmaankin sovelluskohtaisesti ja riippuu myös käyttöliittymästä. Luotuasi uuden dataolion voit lisätä sen sitten säilöluokkaan, kuten CObArray. CObArray-luokassa on Add()-funktio, joka tarvitsee ainoastaan yhden parametrin, osoittimen uuteen olioon. Yksinkertaisin tapa luoda noita olioita esimerkkiohjelmassa on antaa käyttäjän napauttaa hiiren painiketta missä tahansa kohden näkymää ja luoda CBlob-olio hiiren napautuksessa käytettyjen koordinaattien mukaan. Tätä varten tarvitset OnLButtonDown()- sanomankäsittelijäfunktion. Sen luominen käy luvussa 19 esitetyn ilmoitussanoman käsittelijän lisäämisohjeiden mukaan. CObArrayn käyttö Add()-jäsenfunktiolla lisäämisen sijaan haluttuun paikkaan CObArray()-taulukkoa voidaan lisätä olio InsertAt()-funktiolla (antamalla parametreinä haluttu paikka ja osoitin olioon). Luokalla on myös vastaava poistofunktio RemoveAt() sekä muuttamis- ja lukemisfunktiot SetAt() ja GetAt(). Lisää seuraavat rivit OnLButtonDown()-käsittelijään luodaksesi uuden blob-olio point-parametrin perusteella ja lisätäksesi sen dokumentissa olevaan m_blobarray-taulukkoon (//TODO-kommenttien jälkeen). GetDocument()->m_BlobArray.Add(new CBlob(point)); Invalidate(); Invalidate()-funktio saa aikaan näkymän ja myös uusien olioiden uudelleenpiirtämisen listauksen 23.4 koodin avulla. LISTAUS 23.4 LST23_4.CPP Täplien piirtäminen OnDraw()-funktiosta 1 void CPersistView::OnDraw(CDC* pdc) 2 { 3 CPersistDoc* pdoc = GetDocument(); 4 ASSERT_VALID(pDoc); 5 6 // TODO: add draw code for native data here 7 8 for(int i=0;i<pdoc->m_blobarray.getsize();i++) 1 9 { 10 CBlob* pblob = (CBlob*)pDoc->m_BlobArray.GetAt(i); 11 pblob->draw(pdc); 12 } 13 } 1 Näkymä yksinkertaisesti käy läpi kaikki täplät (blob-oliot) ja pyytää kutakin piirtämään itsensä. Listauksessa 23.4 oliot käydään läpi riveillä 8 12 ja jokaisen olion Draw()-funktiota kutsutaan (rivi 11). Kääntäjä tarvitsee lisäksi luokan määrittelyn:

12 558 Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen #include blob.h Voit lisätä tämän muiden #include-lauseiden jälkeen PersistView.cpp tiedostoon. Kun käännät ja ajat sovelluksesi, voit napauttaa hiiren vasemmalla painikkeella näkymäikkunassa ja lisätä uusia täpliä (blob), kuten kuva 23.2 osoittaa. KUVA 23.2 Blob-olioiden näyttäminen Persist-sovelluksesta KATSO MYÖS Lisätietoja dokumentista ja dokumentin datasta luvusta 12. Täytettyjen muotojen piirtäminen piirtopinnalle luvussa 16. Dataolioiden serialisointi Jotta voisit serialisoida dataoliosi, joudut lisäämään luokkaasi Serialize()-funktion, jolla jäsenmuuttujista muodostetaan peräkkäinen luettelo, joka voidaan ladata tiedostosta tai tallentaa tiedostoon. Serialize()-virtuaalifunktio on määritelty seuraavasti: // ** Add the Serialize Override virtual void Serialize(CArchive& ar);

13 Datan tallentaminen, lataaminen ja siirtäminen Edellä esitetty Serialize()-funktion määrittely lisätään luokan määrittelytiedostoon (esimerkiksi blob.h). Vastaava Serialize()- funktion toteutuskoodi tulee sitten lisätä luokan toteutustiedostoon (esimerkiksi blob.cpp). Levytiedosto on upotettu CArchive-olioon, jonka Serialize()- funktio saa parametrinä sovellusrungolta. OSA VI LUKU CArchive-olion avulla dokumentin data saadaan helposti luetteloksi ja siinä on tieto tiedonsiirron suunnasta eli tallennetaanko tietoja vai ladataanko niitä. Käyttäjän valitessa dokumentin lataamisen tai tallentamisen sovellusrunko luo automaattisesti CArchive-olion ja avaa tiedoston valmiiksi tiedonsiirtoa varten. Sen jälkeen se kutsuu dokumentin omaa Serialize()-funktiota välittäen sille CArchive-olion parametrinä. CArchive-luokkaan on määritelty useita toimintoja, kuten operaattorit << ja >>. Näitä käytetään datan siirtämiseen CArchive-olioon (tiedostoon). Operaattoreilla voidaan tallentaa arvo näin: ar << m_myvar ja ladata arvo tiedostosta näin: Virtuaalifunktioiden lisääminen omiin luokkiin Jos olet käyttänyt ClassViewsivun pikavalikosta saatavaa New Virtual Override -valintaikkunaa, huomaat, ettei sillä voi lisätä virtuaalifunktioita omiin luokkiin. Joudut sen sijaan lisäämään manuaalisesti funktion määrittely- ja toteutuskoodin luokkasi määrittelytiedostoon (.h) ja toteutustiedostoon (.cpp) tekstieditoria käyttäen. ar >> m_myvar Kun kirjoitat olion Serialize()-funktiota, voit tutkia, tallennetaanko vai ladataanko oliota käyttämällä CArchive-olion jäsenfunktioita IsStoring() ja IsLoading(). Tavallisesti kukin jäsenmuuttuja tallennetaan tai ladataan omalla << tai >>-operaattoria käyttävällä rivillään. Tämä on esitetty CBlob-esimerkkioliolle listauksessa LISTAUS 23.5 LST23_5.CPP Serialisoinnin toteutuksen lisääminen CBlob-luokkaan 1 void CBlob::Serialize(CArchive& ar) 2 { 3 CObject::Serialize(ar); 4 if (ar.isstoring()) 5 { 6 ar << m_ptposition; 1 7 ar << m_crcolor; 8 ar << m_nsize; 9 ar << m_nshape; 10 } 11 else 12 { 13 ar >> m_ptposition; 1 14 ar >> m_crcolor; 15 ar >> m_nsize; 16 ar >> m_nshape; 17 } 18 } 1 Tallennettaessa jäsenmuuttujat lisätään arkistoon (Archive). 2 Ladattaessa arkisto puretaan jäsenmuuttujiin.

14 560 Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen Listauksen 23.5 rivillä 4 kutsutaan CArchive-luokan jäsenfunktiota IsStoring() selvittämään, tallentaako vai lataako CArchive-olio dataa. Tallennettaessa data tulee siirtää CArchive-olioon ja ladatessa lukea se siitä. Datan tallennus tehdään riveillä 6 9. <<-operaattori välittää blob-luokan kunkin jäsenen CArchive-oliolle, jossa arvo lisätään levytiedostoon. Sama tehdään päinvastoin riveillä ja >>-operaattori alustaa jäsenmuuttujan CArchive-oliosta luetulla arvolla. Joudut kutsumaan jokaisen dokumenttisi olion Serialize()-funktiota olion tallentamiseksi tai lataamiseksi. Tämä käy muokkaamalla dokumentin omaa Serialize()-funktiota kutsumaan olioiden Serialize()-funktioita. Dokumentin tietojen serialisoiminen Useimmat sovellukset todennäköisesti tallentavat esimerkkiämme enemmän ja mutkikkaampia tietoja. Joka tapauksessa dokumentin Serialize()-funktio tarjoaa hyvän aloituspisteen koko sovelluksen tietojen tallentamiselle. Joudut todennäköisesti lisäämään dokumentin Serialize()-funktioon useita taulukoita tai kehittyneempiä kokoelmaolioita sovelluksesi tietojen tallentamiseksi ja lataamiseksi. Olioiden säilyttäminen CObArray-taulukossa (kuten esimerkin m_blobarrayssä) tekee tästä huomattavasti helpompaa. CObArray tukee serialisointia ja se osaa käydä läpi säilyttämänsä oliot ja tallentaa ne. Vastaavasti uutta dokumenttia levyltä avattaessa CObArray-olio huomaa, kuinka monta oliota se tulee säilyttämään ja minkä tyyppisiä ne ovat, joten se osaa luoda oliot puolestasi (sillä oletusmuodostimella) ja kustua sitten kunkin olion Serialize()-funktiota olion tietojen alustamiseksi tiedostosta. Tämä tarkoittaa, että joudut kutsumaan ainoastaan oliotaulukon Serialize()-funktiota, esimerkiksi näin: void CPersistDoc::Serialize(CArchive& ar) { m_blobarray.serialize(ar); } Voit tehdä nämä muutokset esimerkkiohjelmaan ja kääntää ja ajaa sen nähdäksesi, kuinka serialisointikoodi lataa ja tallentaa täpläolioita (blob). Seuraavaksi esitellään esimerkkiohjelman täpläolioiden tallentaminen ja lataaminen. Piirrä ohjelmalla muutamia täpliä ikkunassa napauttamalla. Valitse sitten File-valikosta Save As. Sovellusrunko avaa automaattisesti Save As valintaikkunan, jossa voit muuttaa tiedoston oletusnimen Untitled.blb valitsemaksi blob-tiedostoksi. Jos muutat nimen ja napautat Save, serialisointi tehdään ja täplätiedot tallentuvat levylle. Voit varmistaa tämän sulkemalla sovelluksen, käynnistämällä sen uudelleen ja valitsemalla File-valikosta Open. Koska AppWizardissa tiedostotyypiksi määrättiin.blb, näet aluksi ainoastaan blob-tiedostot, joten tallentamasi tiedoston tulisi olla ainoa valittavissa oleva. Valitse se ja lataa se uudelleen sovellukseen Open-painikkeella. Nyt aiemmin

15 Datan tallentaminen, lataaminen ja siirtäminen piirtämäsi täplät ovat ikkunassa jälleen omilla paikoillaan. Voit nyt luoda uusia täpliä ja tallentaa ne uudelleen tai luoda uuden dokumentin ja tallentaa sen eri nimelle ja käsitellä tiedostoja kuten muissakin sovelluksissa. Voit sulkea tietokoneesi ja tulla takaisin kahden viikon päästä samat täplät ovat yhä samoissa paikoissa, mihin ne edellisellä kerralla piirsit. OSA VI LUKU Viimeksi avattujen tiedostojen luettelon käyttö Sovellusrunko tarjoaa vielä kaiken edellisen lisäksi luettelon viimeksi avatuista tiedostoista. Jos olet tallentanut useita eri nimisiä blobtiedostoja, olet saattanut huomata File-vaikossa luettelon viimeksi avatuista tiedostoista. Voit helposti valita minkä tahansa näistä avattavaksi suoraan valikosta. Dokumenttityyppien rekisteröiminen Olet varmaan kokenut, kuinka suoraan dokumenttitiedoston nimeä kaksoisnapauttamalla saadaan avattua dokumenttiin liitetty Windowssovellus. Kyseessä on rekisteröityjen tiedostotyyppien käyttö; lisäämällä sovellukseen pari koodiriviä saat samat toiminnot omaan sovellukseesi. Nämä koodirivit tulee lisätä sovellusluokkasi ( App) InitInstance()-funktioon välittömästi AddDocTemplate(pDocTemplate); -rivin jälkeen: CRecentFileList-luokan käyttö SDI- ja MDI-vakiosovellukset käyttävät CRecentFileList-luokkaa viimeksi avattujen tiedostojen luettelona. Voit käyttää tätä luokkaa suoraan (eikä sovellusrungon kautta) toteuttamaan oman viimeksi käytettyjen tiedstojen luettelon ja liittämään sen omiin valikkoihin. CRecentFileList-luokalle voidaan määrittää kunkin tiedoston näytettävä nimi ja tiedostopolku. Se osaa automaattisesti päivittää valikkoa tiedoston lisäämiseksi tai poistamiseksi. RegisterShellFileTypes(); EnableShellOpen(); KATSO MYÖS Lisätietoja dokumentista ja sen datasta luvussa 12. Tiedostojen käsittely SDI- ja MDI-sovelluksissa, jotka joutuvat tallentamaan dokumentin tietoja, on serialisointi erittäin käyttökelpoinen menettely. Joskus tiedostoja joudutaan kuitenkin luomaan, lukemaan ja kirjoittamaan suoraan. MFC-kirjasto tarjoaa käyttöön levytiedoston paketoivan luokan CFile. Tähän luokkaan kätkeytyvät kaikki tiedosto-operaatiot sekä tiedostoon liittyvät attribuutit. Luomalla ja käyttämällä CFile-olioita voit myös luoda, lukea ja kirjoittaa levytiedostoja CFile-luokan funktioiden avulla.

16 562 Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen Käytitpä sitten dokumentin datan serialisointia tai suoraan tiedostoon kirjoittamista, päädyt kuitenkin käyttämään CFile-luokkaa tai siitä johdettua luokkaa. Serialisoinnin käyttämä CArchive-luokka yhdistyy CFile-olioon varsinaista dokumentin tietojen lukemista tai kirjoittamista varten. Tässä kappaleessa esitetään, kuinka CFiletoimii sekä tutustutaan CFile-luokan spesifisempiin versioihin. Tiedostokahvat Useiden MFC-luokkien tavoin myös CFile-luokka paketoi Win32-tiedostokahvan. Voit käyttää tätä kahvaa suoraan CFileolion m_hfile-jäsenmuuttujasta. Ellei tiedostoa ole avattu tai luotu, kahvan arvo on CFile::hFileNull, muutoin siinä on nykyisen tiedoston kahva. CFile-luokan käyttö Saat muodostettua CFile-olion kolmella tavalla. Yksinkertaisin muodostin ei tarvitse parametrejä ja luo avaamattoman tiedosto-olion, jonka Open()-funktiota kutsutaan myöhemmin levytiedoston luomiseksi tai avaamiseksi. Toinen muodostinversio käyttää yhtä parametriä (hfile-kahva), jonka tulee olla valmiiksi avattu tiedosto. Tällä voidaan ottaa käyttöön CFile-olio jo valmiiksi avatulle tiedostolle. Kolmas muodostinversio käyttää kahta parametriä: ensimmäinen on avattavan tai luotavan tiedoston nimi ja hakemistopolku ja toinen yhdistelmä mahdollisista tiedostonavauslipuista. Tiedostojen avaaminen Eräs kaikkein tärkeimmistä tiedostonkäsittelytoimista on aluksi tehtävä tiedoston avaaminen. Määrittämällä avaamislippuja kerrot etukäteen, kuinka haluat annettua tiedostonimeä käsiteltävän. Tahdot ehkä aina luoda uuden tiedoston, avata tiedoston ainoastaan luettavaksi (readonly) tai sekä luettavaksi että kirjoitettavaksi. Voit antaa Open()- funktiolle toisena parametrinä (nopenflags) useita erilaisia lukemiseen ja kirjoittamiseen liittyviä lippuja (taulukko 23.1). Ensimmäinen Open()-funktion parametri on avattavan tai luotavan tiedoston nimi. Voit haluttaessa yhdistää joitakin lippujen arvoja, esimerkiksi näin: CFile filemyfile; FileMyFile.Open( MyFile.txt, CFile::modeCreate + CFile::modeNoTruncate); Näillä lipuilla avataan tiedosto MyFile.txt, mikäli se on jo olemassa; muutoin luodaan samanniminen uusi tiedosto. Mikäli olisi käytetty ainoastaan lippua CFile::modeCreate, uusi tiedosto olisi luotu, vaikka vanhakin olisi ollut olemassa, joten CFile::modeNoTruncatelippu muuttaa CFile::modeCreate-lipun vaikutusta siten, ettei tiedostoja typistetä (truncate) nollan tavun mittaisiksi. Tässä liput on yhdistetty +-operaattorilla, mutta yhtä hyvin olisi voitu käyttää - operaattoria (TAI), esimerkiksi näin: CFile filemyfile;

17 Datan tallentaminen, lataaminen ja siirtäminen FileMyFile.Open( MyFile.txt, CFile::modeCreate CFile::modeNoTruncate); Tämä koodi toimii aivan samoin kuin edellinenkin, koska liput ovat bittikohtaista tietoa ja looginen TAI yhdistää ne aivan samoin kuin yhteenlaskukin. OSA VI LUKU Jos tiedoston avaaminen onnistuu, Open()-funktio palauttaa TRUEarvon FALSE-paluuarvo tarkoittaa avaamisen epäonnistumista. Open()-funktiolle voidaan valinnaisesti välittää kolmantena parametrinä CFileException-osoitin, jonka osoittamassa CFileException-oliossa on funktion suorittamisen jälkeen tiedot avaamisen mahdollisen epäonnistumisen syistä. TAULUKKO 23.1 Tiedoston avaamiseen tarkoitetut CFile::Open()-funktiolle syötettävät liput Lippu CFile::modeCreate CFile::modeNoTruncate CFile::modeRead CFile::modeWrite CFile::modeReadWrite CFile::shareDenyNone CFile::shareExclusive CFile::shareDenyRead CFile::shareDenyWrite CFile::typeText CFile::typeBinary Kuvaus Luo aina uuden tiedoston (vaikka samanniminen tiedosto olisi olemassa). Tämä lippu voidaan yhdistää CFile::modeCreatelipun kanssa haluttaessa luoda uusi tiedosto, mikäli samannimistä ei ole olemassa ja muuten avata nimetty tiedosto. Tiedosto avataan vain luettavaksi siihen ei voi kirjoittaa. Tiedosto avataan vain kirjoitettavaksi siitä ei voi lukea. Tiedosto avataan sekä lukemista että kirjoitta mista varten. Muut prosessit voivat lukea ja kirjoittaa tiedostoon. Muut prosessit eivät voi lukea ja kirjoittaa tiedostoon. Muut prosessit eivät voi lukea avatusta tiedostosta. Muut prosessit eivät voi kirjoittaa avattuun tiedostoon. Jotkut johdetuista luokista hyödyntävät tätä tekstinkäsittelyyn. Ei muokkaa merkkejä tiedostosta luettaessa tai siihen kirjoitettaessa. Jotkut johdetuista luokista vaativat tämän lipun. CFileException-olion käyttö Jos tiedostoa avattaessa sattuu virhe, välitetään ohjelmalle CFileException-olio. Virheen syy voidaan lukea CFileExceptionolion m_cause-jäsenmuuttujasta (CFileException-olion omat numerokoodit) tai m_ioserrorjäsenmuuttujasta (käyttöjärjestelmän virhekoodit). Tavallisimpia m_cause-muuttujan arvoja ovat CFileException::fileNotFound, CFileException::accessDenied ja CFileException::diskFull.

18 564 Puskurin lopun ohi lukeminen Ole tarkkana, ettet pyydä Read()- toimintoa lukemaan enempää tavuja kuin puskuriisi mahtuu. Tällaisessa tapauksessa saatetaan kirjoittaa ohjelman muiden osien päälle ja saadaan varmasti ohjelma kaatumaan tai muita ennakoimattomia ongelmia. Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen Tiedoston lukeminen ja kirjoittaminen Kun tiedosto on avattu, voit lukea sitä ja kirjoittaa siihen avausmoodin mukaisesti. Lukemista ja kirjoittamista varten CFile-luokassa on Read()- ja Write()-funktiot sekä niihin liitetty tiedosto-osoitin. Kun tiedosto on avattu, osoitetaan tiedoston alkuun. Jos tiedostosta luetaan 200 tavua, paikkaa päivitetään ja seuraava Read()-funktio lukeekin tietoa 200 tavun päästä tiedoston alusta. Tässä luvussa esitetään myöhemmin, kuinka tiedosto-osoitinta voidaan muokata. Tyypillinen Read()-funktion käyttö näyttäisi esimerkiksi tältä: CFile myfile( MyFile.txt,CFile::modeRead); char armyreadbuffer[200]; UINT ubytesread = myfile.read(armyreadbuffer,sizeof(armyreadbuffer)); Read()-funktio saa kaksi parametriä. Ensimmäinen on kohdepuskurin osoite. Tähän puskuriin kirjoitetaan kaikki luettu tieto. Toinen parametri kertoo Read()-funktiolle, kuinka monta tavua halutaan lukea; tavuja voi olla vain muutama tai sitten esimerkin tapaan vaikkapa puskurin koko. Kun Read()-funktio on suoritettu, palautetaan luettujen tavujen määrä. Tämä voi olla sama kuin niiden tavujen määrä, jotka oli määrä lukea tai tiedoston loppu kohdattaessa vähemmän mikä kertoo, että kaikki saatavilla olevat tavut oli luettu. Jos paluuarvo on nolla, tiedostossa ei ole jäljellä tavuja luettavaksi. Tämä voidaan kokeilla käytännössä yksinkertaisella valintaikkunapohjaisella (dialog-based) editorisovelluksella. Lisäät siis koodia valintaikkunan OnInitDialog()-käsittelijäfunktioon tekstin lukemiseksi tiedostosta, sen muokkaamiseksi ja tallentamiseksi takaisin tiedostoon OK-painiketta painettaessa. Ohjeet tämän FileEdit-valintaikkunasovelluksen tekemiseksi AppWizardilla löydät luvusta 5. Tämän jälkeen lisäät suuren tekstiruudun (edit control) pääikkunaan ja asetat sen MultiLine-tyylin käytettäväksi. Liitä vielä ClassWizardilla CString-tyyppinen m_editbox-muuttuja tekstiruutuun (ohjeet myös luvussa 5). Kun olet lisännyt listauksen 23.6 koodin CFileEditDlg-luokan OnInitDialog()-funktioon, voit lukea tekstin ohjelmaan kiinteästi koodatusta C:\MyFile.txt-tiedostosta.

19 Datan tallentaminen, lataaminen ja siirtäminen LISTAUS 23.6 LST23_6.CPP - Tiedoston sisällön lukeminen tekstikontrolliin OSA VI LUKU // TODO: Add extra initialization here 2 3 // ** Declare and open a file object for reading 4 CFile fileedittext; 5 if (fileedittext.open("c:\\myfile.txt",cfile::moderead)) 6 { 7 // ** Declare a large buffer for reading the text 8 char cbuf[512]; 9 UINT ubytesread; // ** Continue reading the file until no more data is read 12 while(ubytesread = 13 fileedittext.read(cbuf,sizeof(cbuf)-1)) 1 14 { 15 // ** Null terminate after the last character 16 cbuf[ubytesread] = NULL; // ** Add the buffer to the mapped CString 19 m_editbox += CString(cBuf); 20 } // ** Close the file 23 fileedittext.close(); // ** Send the m_editbox string to the edit control 26 UpdateData(FALSE); 27 } Listauksessa 23.6 CFile-luokan olio fileedittext määritellään rivillä 4 ja avataan rivillä 5 ohjelmaan kiinteästi koodatusta tiedostosta C:\MyFile.txt. Read()-funktio rivillä 13 käyttää rivillä 8 määriteltyä puskuria tiedostosta luettavien tavujen tallentamiseen. Read()-funktion toinen parametri määrittää, että luettavien tavujen määrä on yhtä pienempi kuin puskurin koko. Syy tähän on, että tiedostosta luettujen tavujen perään voitaisiin vielä lisätä NULL-merkki, jolloin puskuriin saadaan yksi nollaan päättyvä merkkijono (null terminated string). Kun merkkijono on päätetty NULL-merkillä, se voidaan muuntaa CStringolioksi ja lisätä CString-merkkijonon m_editbox loppuun rivillä 19. Jos tiedosto on ensimmäisellä lukukerralla pidempi kuin puskuri, koko toimintoa toistetaan, kunnes tiedosto on saatu luettua kokonaan. Kun Read()-funktio asettaa ubytesread-arvon nollaksi, while-silmukka päättyy ja tiedosto suljetaan Close()-funktiolla (rivillä 23). Teksti- Kenoviivan (\) käyttö Huomaa, että koodissa rivillä 5 on kaksi kenoviiva. Kyseessä ei ole kirjoitusvirhe, vaan kenoviivaa käytetään C-kielessä (ja C++:ssa) erikoismerkkien merkitsemiseen, kuten \n (rivinvaihto), \r (telanpalautus) ja \b (korjaus). Tästä syystä jokainen \ pitää esittää merkinnällä \\. 1 Tätä while-silmukkaa toistetaan, kunnes Read()-funktio palauttaa arvon, joka kertoo, ettei tavuja enää luettu. Tällöin ollaan tiedoston lopussa.

20 566 Nollaan päättyvät merkkijonot Nollaan päättyvä merkkijono (null-terminated string) on (yksiulotteinen) merkkitaulukko, jossa varsinaisten merkkien jälkeen on NULL-merkki (nolla) ilmoittamassa merkkijonon loppumista. Nollaan päättyvät merkkijonot ovat yleisiä C- koodissa ja niiden kanssa voidaan käyttää useita funktioita. Esimerkiksi strlen() palauttaa merkkijonon pituuden ja strcpy()- funktiolla voidaan kopioida toisena parametrinä annettu merkkijono ensimmäiseen. strcmp()-funktio puolestaan vertaa kahta merkkijonoa ja palauttaa nollan, jos ne ovat samoja. Näiden ja monien muiden vastaavien funktioiden dokumentointi löytyy Microsoftin sähköisestä manuaalista String Manipulation Routines -otsikon alta. Näitä funktioita käytettäessä on toteutustiedostoon otettava mukaan #include-lauseella string.h-tiedosto. 1 Koko tekstikontrollin teksti voidaan tulostaa yhdellä Write()- funktiolla, koska sen pituus tunnetaan etukäteen. Sovelluksen tietojen ulkoistaminen Datan tallentaminen, lataaminen ja siirtäminen kontrolliin liitetyn m_editbox-muuttujan sisältö päivitetään kontrolliin rivin 26 funktiolla UpdateData(FALSE). Tässä on editorisovelluksen lukeva osa kokonaisuudessaan. Kun käännät ja ajat sovelluksen näiden rivien lisäämisen jälkeen, saat sovellukseen esiin C:\MyFile.txt tiedoston sisältämän tekstin. Voit luoda tuon tiedoston esimerkiksi Windowsin Muistiolla (Notepad) kirjoittamalla siinä tekstiä ja tallentamalla sen tiedostoon C:\MyFile.txt. Käyttäjän painettua OK-painiketta tekstin muuttamisen jälkeen joudut kirjoittaman muutokset takaisin tiedostoon. Tämä onnistuu aina luomalla uusi tiedosto (siis kirjoittamalla se vanhan päälle) ja käyttämällä Write()-funktiota tekstiruutuun liitetyn CString-muuttujan sisällön kirjoittamiseen tiedostoon. Lisää ClassWizardilla OK-painikkeelle BN_CLICKED-käsittelijä nimeltään OnOK tekstiruudun sisällön tallettavaa koodia varten (listaus 23.7). Löydät lisätietoja BN_CLICKED-käsittelijän lisäämisestä luvusta 4. LISTAUS 23.7 LST23_7.CPP Tekstiruudun tietojen kirjoittaminen levytiedostoon 1 void CFileEditDlg::OnOK() 2 { 3 // TODO: Add extra validation here 4 5 // ** Set the m_editbox string from the edit control 6 UpdateData(TRUE); 7 8 // ** Declare and open a file object for writing 9 CFile fileedittext; 10 if (fileedittext.open("c:\\myfile.txt", 11 CFile::modeCreate + CFile::modeWrite)) 12 { 13 // ** Write out the full string 14 fileedittext.write((const char*lpcstr) 15 m_editbox,m_editbox.getlength()); // ** Close the file 18 fileedittext.close(); 19 } CDialog::OnOK(); 22 }

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

Lisätiedot

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla Viimeksi muokattu 5. toukokuuta 2012 Maastotietokannan torrent-jakeluun sisältyy yli 5000 zip-arkistoa,

Lisätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

Lisätiedot

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä

Kehitysympäristö LUKU. Developer Studio kehitysympäristön alkeet. Liikkuminen projektin työtilassa ja sen eri näkymissä OSA I LUKU 2 23 2 LUKU Developer Studio kehitysympäristön alkeet Liikkuminen projektin työtilassa ja sen eri näkymissä Projektien hallinnan vaatimat asetukset 24 Developer Studio - ympäristön räätälöinti

Lisätiedot

Muuttujien määrittely

Muuttujien määrittely Tarja Heikkilä Muuttujien määrittely Määrittele muuttujat SPSS-ohjelmaan lomakkeen kysymyksistä. Harjoitusta varten lomakkeeseen on muokattu kysymyksiä kahdesta opiskelijoiden tekemästä Joupiskan rinneravintolaa

Lisätiedot

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0). V1.0.0 (14.10.2015) 1 (7) KYTKENTÄ HUOM: toimii Modbus-masterina. Tämän vuoksi toinen mahdollinen Modbus-master on irrotettava verkosta, kun kytketään valmiiseen Modbus-verkkoon. Produalin Modbus-laitteiden

Lisätiedot

MDI-sovellusten kehittäminen

MDI-sovellusten kehittäminen OSA V 491 LUKU 21 21 LUKU MDI-sovelluksen luominen Siirtyminen dokumentti, näkymä- ja kehysluokan välillä Sovelluksen kehittäminen MFC;n monidokumentti/näkymä-arkkitehtuurilla 492 Kehittyneet dokumentti/näkymä-tekniikat

Lisätiedot

Hiirisanomiin vastaaminen

Hiirisanomiin vastaaminen OSA II LUKU 8 163 8 LUKU Reagointi käyttäjän painaessa tai vapauttaessa hiiren painikkeen Omien funktioiden käyttö, kun hiiri liikkuu Hiirikoordinaattien käsittely ja valitun alueen tutkiminen 164 Näppäinpainallusten

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

Tietojen tallentaminen

Tietojen tallentaminen 245 L U K U 6 Tietojen tallentaminen Oppitunti 1: Tiedosto-I/O 246 Oppitunti 2: Sovelluksen tietojen serialisointi 254 Oppitunti 3: Rekisterin käsittely 265 Laboratorio 6: Tallennettujen tietojen käsittely

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36

Written by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36 !!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat

Lisätiedot

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti

Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu KÄYTTÖOHJE. LiKe Liiketoiminnan kehityksen tukiprojekti Tik-76.115 Tietojenkäsittelyopin ohjelmatyö Tietotekniikan osasto Teknillinen korkeakoulu JÄRJESTELMÄN KÄYTTÖOHJE LiKe Liiketoiminnan kehityksen tukiprojekti Versio: 1.1 Tila: hyväksytty Päivämäärä: 13.2.2001

Lisätiedot

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Tulosta yrityksesi tuloslaskelma ja tase myöhempää tarkastusta varten. Ota varmuuskopio tilanteesta ennen tilimuunnosta.

Tulosta yrityksesi tuloslaskelma ja tase myöhempää tarkastusta varten. Ota varmuuskopio tilanteesta ennen tilimuunnosta. Tilimuunnosohje 1 (5) Tilimuunnosajo Tilimuunnosajo täytyy tehdä jos halutaan vaihtaa yritykselle tilikartta ja säilyttää tilien tapahtumat. Tilikartan vaihtoa varten perustetaan uusi yritys, jonne muunnosajossa

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

Visual C++ -ohjelman tekeminen ja suunnittelu

Visual C++ -ohjelman tekeminen ja suunnittelu Visual C++ -ohjelman tekeminen ja suunnittelu OSA I LUKU 1 5 1 LUKU Visual C++ -ohjelman tekeminen ja suunnittelu Windows sovellusten tekeminen AppWizardilla Sovelluksen muokkaaminen resurssieditorilla

Lisätiedot

Dokumentit, näkymät ja kehykset

Dokumentit, näkymät ja kehykset OSA III 249 LUKU 12 12 LUKU Single document interface sovelluksen luominen MFC:n dokumentti-näkymä rakennetta hyödyntävän sovelluksen kehittäminen Dokumentti-, näkymä-, kehys- ja dokumenttimalliluokat

Lisätiedot

Osa III. Olioiden luominen vapaalle muistialueelle

Osa III. Olioiden luominen vapaalle muistialueelle Osa III 10. oppitunti Kehittyneet osoittimet Eräs tehokkaimpia C++ -työkaluja on mahdollisuus käsitellä tietokoneen muistia suoraan osoittimien avulla. Tässä luvussa käsitelläänkin seuraavia aiheita: Kuinka

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

Usean näkymän luominen

Usean näkymän luominen OSA V 471 LUKU 20 20 LUKU Dynaamisten ja staattisten jakajaikkunoiden käyttö Resurssienhallinnan kaltaisen käyttöliittymän tekeminen sovelluksiin ja hallinta ilman ikkunan jakamista 472 Kehittyneet dokumentti/näkymä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Sähköposti ja uutisryhmät 4.5.2005

Sähköposti ja uutisryhmät 4.5.2005 Outlook Express Käyttöliittymä Outlook Express on windows käyttöön tarkoitettu sähköpostin ja uutisryhmien luku- ja kirjoitussovellus. Se käynnistyy joko omasta kuvakkeestaan työpöydältä tai Internet Explorer

Lisätiedot

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8)

WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) WCONDES OHJEET ITÄRASTEILLE (tehty Condes versiolle 8) 1 UUDEN KILPAILUTIEDOSTON AVAUS Avaa Wcondes ohjelma tuplaklikkaamalla wcondes.lnk ikonia. Ohjelma avaa automaattisesti viimeksi tallennetun kilpailutiedoston.

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

SoleMOVE lähtevän harjoittelijan ohje

SoleMOVE lähtevän harjoittelijan ohje SoleMOVE lähtevän harjoittelijan ohje 3.12.2013 Kuva: Sanna Waris SoleMOVE lähtevän ERASMUS- harjoittelijan ohje 1 SoleMOVE lähtevän harjoittelijan ohje... 1 1. Kirjautuminen... 3 2. Uuden lähtevän Erasmus-harjoittelijan

Lisätiedot

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03.

EMVHost Online SUBJECT: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT COMPANY: EMVHost Online Client sovelluksen käyttöohje AUTHOR: DATE: 15.03. EMVHost Online SUBJECT: COMPANY: COMMENTS: AUTHOR: EMVHOST ONLINE CLIENT - AUTOMAATTISIIRROT NETS OY EMVHost Online Client sovelluksen käyttöohje NETS OY DATE: 15.03.2011 VERSION: 1.0 1 SISÄLLYS SISÄLLYS...

Lisätiedot

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b Pythonin Kertaus Cse-a1130 Tietotekniikka Sovelluksissa Versio 0.01b Listat 1/2 esimerkkejä listan peruskäytöstä. > lista=['kala','kukko','kissa','koira'] ['kala','kukko','kissa','koira'] >lista.append('kana')

Lisätiedot

Mikäli olet saanut e-kirjan latauslinkin sähköpostilla, seuraa näitä ohjeita e-kirjan lataamisessa.

Mikäli olet saanut e-kirjan latauslinkin sähköpostilla, seuraa näitä ohjeita e-kirjan lataamisessa. E-kirjan latausohje Mikäli olet saanut e-kirjan latauslinkin sähköpostilla, seuraa näitä ohjeita e-kirjan lataamisessa. Pikaohjeet 1. Varmista että tietokoneellesi on asennettu Adobe Digital Editions ohjelma.

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web Services tietokantaohjelmoinnin perusteet ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...

Lisätiedot

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje

Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sonera Viestintäpalvelu VIP VIP Laajennettu raportointi Ohje Sisällysluettelo VIP Laajennettu raportointi... 3 Luo raportti Laajennetun raportoinnin työkaluilla... 4 Avaa Laajennettu raportointi... 4 Valitse

Lisätiedot

ActiveX-kontrollien käyttö

ActiveX-kontrollien käyttö OSA II LUKU 9 181 9 LUKU Kehittyneiden ActiveX-kontrollien lisääminen projektiisi Kontrollin ominaisuuksien ja tyylien muokkaaminen Kontrollista saadun tiedon hyödyntäminen ohjelmassa 182 ActiveX-kontrollit

Lisätiedot

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Opiskelijoiden OneDriveohje Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy Ohjeen nimi Opiskelijoiden OneDrive-ohje Vastuuhenkilö Mari Jokiniemi

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

Lisätiedot

Microsoft Visual Studio 2005

Microsoft Visual Studio 2005 Sovelluksen jako palvelimiksi: Palvelin on sille annettuun vastuulliseen tehtävään erikoistunut sovellusosa. Käyttöliittymäpalvelin (Web-palvelin) vastaa käyttöliittymän toteuttamisesta. Web-palvelin toteuttaa

Lisätiedot

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö

Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö OSA V 439 LUKU 19 19 LUKU Luettelo-, puu-, parannetun tekstiruutu- sekä HTML-näkymän käyttö Luettelon tietojen ylläpito List View näkymässä

Lisätiedot

Luento 5. Timo Savola. 28. huhtikuuta 2006

Luento 5. Timo Savola. 28. huhtikuuta 2006 UNIX-käyttöjärjestelmä Luento 5 Timo Savola 28. huhtikuuta 2006 Osa I Shell-ohjelmointi Ehtolause Lausekkeet suoritetaan jos ehtolausekkeen paluuarvo on 0 if ehtolauseke then lauseke

Lisätiedot

SSH Secure Shell & SSH File Transfer

SSH Secure Shell & SSH File Transfer SSH Secure Shell & SSH File Transfer TIETOHALLINTO Janne Suvanto 1.9 2002 Sisällysluettelo Sisällysluettelo... 1 Yleistä... 2 SSH Secure Shell ohjelman asetukset... 3 POP3 tunnelin asetukset... 6 Yhteyden

Lisätiedot

Luku 7 Uusien Mallien Tiedostot

Luku 7 Uusien Mallien Tiedostot Luku 7 Uusien Mallien Tiedostot Kaikki ZoomTextin asetukset voidaan tallentaa ja palauttaa käyttämällä mallitiedostoja. Mallitiedostot kontrolloivat kaikkia ZoomTextin toimintoja mukaan lukien suurennustasot,

Lisätiedot

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja. Pikaopas Microsoft Excel 2013 näyttää erilaiselta kuin aiemmat versiot. Tämän oppaan avulla pääset alkuun nopeasti ja saat yleiskuvan uusista ominaisuuksista. Komentojen lisääminen pikatyökaluriville Pidä

Lisätiedot

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1.

Condes. Quick Start opas. Suunnistuksen ratamestariohjelmisto. Versio 7. Quick Start - opas Condes 7. olfellows www.olfellows.net 1. Condes Suunnistuksen ratamestariohjelmisto Versio 7 Quick Start opas Yhteystiedot: olfellows Jouni Laaksonen Poijukuja 4 21120 RAISIO jouni.laaksonen@olfellows.net www.olfellows.net olfellows www.olfellows.net

Lisätiedot

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN -Mene osoitteeseen keskustanuoret.fi/user - Kirjoita saamasi käyttäjätunnus ja salasana - Klikkaa yllä olevaa piirisi logoa niin

Lisätiedot

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu ETAPPI ry JOOMLA 2.5 Artikkeleiden hallinta ja julkaisu ETAPPI ry JOOMLA 2.5 Sivu 1(16) Sisällysluettelo 1 Joomla! sivuston sisällöntuotanto... 2 2 Artikkeleiden julkaisu sivustolla... 4 3 Artikkelin julkaisemista

Lisätiedot

Outlook Web App ver 1.2

Outlook Web App ver 1.2 Outlook Web App ver 1.2 Kirjautuminen Kirjoita selaimen osoiteriville: o365.edu.hel.fi Kirjoita opetuksen verkon tunnuksesi ja salasanasi avautuvalla kirjautumissivulla. Hetken odottelun jälkeen esiin

Lisätiedot

MOODLE TUTUKSI. Pirkko Vänttilä Oulun aikuiskoulutuskeskus 4.8.2008

MOODLE TUTUKSI. Pirkko Vänttilä Oulun aikuiskoulutuskeskus 4.8.2008 2008 MOODLE TUTUKSI Pirkko Vänttilä Oulun aikuiskoulutuskeskus 4.8.2008 SISÄLLYSLUETTELO 1. ALOITUSNÄKYMÄ... 4 2. TUTUSTUMINEN... 5 3. KESKUSTELUT... 8 4. VIESTIT... 10 5. CHATIT... 10 6. TIEDOSTOJA OMALTA

Lisätiedot

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä

Sisällysluettelo 1 Johdanto Root, koko Opalan pääkäyttäjä OPALA Käyttöohje Sisällysluettelo 1 Johdanto 4 2 Root, koko Opalan pääkäyttäjä...5 2.1 Sisäänkirjautuminen.5 2.2 Käyttäjätunnukset 6 2.2.1 Pääkäyttäjätunnukset.6 2.2.1.1 Luo. 7 2.2.1.2 Muokka/poista 8

Lisätiedot

ELOKUVAKASVATUS SODANKYLÄSSÄ VIDEON SIIRTÄMINEN DVD-LEVYLLE

ELOKUVAKASVATUS SODANKYLÄSSÄ VIDEON SIIRTÄMINEN DVD-LEVYLLE ELOKUVAKASVATUS SODANKYLÄSSÄ 99600 Sodankylä +358 (0)40 73 511 63 tommi.nevala@sodankyla.fi Elokuvakasvatus Sodankylässä Oppimateriaali 9/2005 VIDEON SIIRTÄMINEN DVD-LEVYLLE ROXIO TOAST LITE 6 2 ROXIO

Lisätiedot

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat Microsoft Office 2010 löytyy tietokoneen käynnistävalikosta aivan kuin kaikki muutkin tietokoneelle asennetut ohjelmat. Microsoft kansion sisältä löytyy toimisto-ohjelmistopakettiin kuuluvat eri ohjelmat,

Lisätiedot

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi Esimerkkinä Excel-taulukkona ladattavat Helsingin pysäköintilippuautomaatit Viimeksi muokattu 27. huhtikuuta

Lisätiedot

ALVin käyttöohjeet. Kuvaus, rajaus ja tallennus puhelimella ALVin -mobiilisovelluksen avulla dokumentit kuvataan, rajataan ja tallennetaan palveluun.

ALVin käyttöohjeet. Kuvaus, rajaus ja tallennus puhelimella ALVin -mobiilisovelluksen avulla dokumentit kuvataan, rajataan ja tallennetaan palveluun. ALVin käyttöohjeet Nämä käyttöohjeet sisältävät hyödyllisiä vinkkejä palvelun käyttöön. Ne kannattaa lukea ennen palvelun käyttöä. Jos kuitenkin kohtaat ongelmia etkä löydä niihin ratkaisua näistä käyttöohjeista

Lisätiedot

Sivu 1/5 Mitä CD- tai DVD-muotoa tulisi käyttää? Tässä artikkelissa Tarpeita vastaavan levyn ja muodon valinta Tietoja Live File Systemin ja masteroidun levymuodon eroista Miksi Live File System -muodosta

Lisätiedot

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1

Ajokorttimoduuli Moduuli 2. - Laitteenkäyttö ja tiedonhallinta. Harjoitus 1 Ajokorttimoduuli Moduuli 2 - Laitteenkäyttö ja tiedonhallinta Harjoitus 1 Tämän harjoituksen avulla opit alustamaan levykkeesi (voit käyttää levykkeen sijasta myös USBmuistitikkua). Harjoitus tehdään Resurssienhallinnassa.

Lisätiedot

Uutiskirjesovelluksen käyttöohje

Uutiskirjesovelluksen käyttöohje Uutiskirjesovelluksen käyttöohje Käyttäjätuki: Suomen Golfpiste Oy Esterinportti 1 00240 HELSINKI Puhelin: (09) 1566 8800 Fax: (09) 1566 8801 E-mail: gp@golfpiste.com 2 Sisällys Johdanto... 1 Päänavigointi...

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Vesa Ollikainen, päivitys Juha Haataja 3.8.2010

Vesa Ollikainen, päivitys Juha Haataja 3.8.2010 METROPOLIA Tekstinkäsittely1 Peruskäyttö Vesa Ollikainen, päivitys Juha Haataja 3.8.2010 Tavoitteet ja sisältö Tavoite Lyhyen asiakirjan kirjoitustaito Word-tekstinkäsittelyohjelmalla Sisältö Tekstinkäsittelyohjelman

Lisätiedot

Ohjelmistopäivitykset

Ohjelmistopäivitykset Ohjelmistopäivitykset Käyttöopas Copyright 2007 Hewlett-Packard Development Company, L.P. Windows on Microsoft Corporationin Yhdysvalloissa rekisteröimä tavaramerkki. Tässä olevat tiedot voivat muuttua

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori

Teknillinen korkeakoulu T-76.115 Tietojenkäsittelyopin ohjelmatyö. Testitapaukset - Koordinaattieditori Testitapaukset - Koordinaattieditori Sisällysluettelo 1. Johdanto...3 2. Testattava järjestelmä...4 3. Toiminnallisuuden testitapaukset...5 3.1 Uuden projektin avaaminen...5 3.2 vaa olemassaoleva projekti...6

Lisätiedot

Oppilaan pikaopas. Project 2013 käyttöliittymä ja näkymät

Oppilaan pikaopas. Project 2013 käyttöliittymä ja näkymät 1 Oppilaan pikaopas Project 2013 käyttöliittymä ja näkymät Kun avaat Project 2013 -ohjelman, näet ensimmäisenä pelkistetyn näkymän. Uusi Project 2013 voi auttaa projektinhallinnassa kuten esim. projektitietojen

Lisätiedot

Granlund Manager - Huoltokirjan käyttöohje

Granlund Manager - Huoltokirjan käyttöohje Granlund Manager - Huoltokirjan käyttöohje https://senaatti.granlundmanager.fi Käyttäjätuki: 010 759 2300 (ma-pe 08:00-17:00) senaatti@granlund.fi Aloitussivu Prosessit, joihin käyttäjällä on kohteessa

Lisätiedot

Tiedostojen lataaminen netistä ja asentaminen

Tiedostojen lataaminen netistä ja asentaminen s. 1/5 Tiedostojen lataaminen netistä ja asentaminen Yleistä Internetissä on paljon hyödyllisiä ilmaisohjelmia, jotka voi ladata ja asentaa omalle koneelle. Osa ohjelmista löytyy suomenkielisiltä sivuilta,

Lisätiedot

Pikaohjeita OneNote OPS:in käyttäjille

Pikaohjeita OneNote OPS:in käyttäjille OneNote OPS OHJE Pikaohjeita OneNote OPS:in käyttäjille Vinkki: Jos et löydä hakemaasi, voit painaa F1-painiketta, joka avaa OneNote-ohjeen, josta voit hakea hakusanoilla vastausta kysymyksiisi liittyen

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia. Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka

Lisätiedot

C# Windows ohjelmointi perusopas

C# Windows ohjelmointi perusopas Paavo Räisänen C# Windows ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa

Lisätiedot

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA SISÄLLYS 1. KUVAN TUOMINEN PAINTIIN...1 1.1. TALLENNETUN KUVAN HAKEMINEN...1 1.2. KUVAN KOPIOIMINEN JA LIITTÄMINEN...1 1.1. PRINT

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Käyttäjän käsikirja. LIB 500 ja LIB 510 v.4.0.2. 8.2. Releasettelutyökalu. 8.2.1. Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl

Käyttäjän käsikirja. LIB 500 ja LIB 510 v.4.0.2. 8.2. Releasettelutyökalu. 8.2.1. Yleistä. ,NNXQDMRNDLOPRLWWDDHWWlNRKGHRQSlLYLWHWWlYl 1MRS751368-RUM Käyttäjän käsikirja 8.1. Releyksikön valitseminen Releyksiköt esitetään asemakuvassa painikkeina. 8 $VHPDNXYDMRVVDQlN\\UHOH\NVLNN Jos kohteita tarvitsee päivittää, avataan ikkuna (Kuva 8.1.-2)

Lisätiedot

Ohjeet e kirjan ostajalle

Ohjeet e kirjan ostajalle 1 Ohjeet e kirjan ostajalle 1. Ostaminen ja käyttöönotto 1.1. Näin saat e kirjan käyttöösi Lataa tietokoneellesi Adobe Digital Editions (ADE) ohjelma täältä: http://www.adobe.com/products/digitaleditions/.

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla BLOGGER ohjeita blogin pitämiseen Googlen Bloggerilla Sisältö Blogin luominen... 1 Uuden blogitekstin kirjoittaminen... 4 Kuvan lisääminen blogitekstiin... 5 Lisää kuva omalta koneelta... 6 Lisää kuva

Lisätiedot

2013 -merkistä tunnistat uudet ominaisuudet

2013 -merkistä tunnistat uudet ominaisuudet Tähän käsikirjaan on koottu Ecomiin liittyviä yleisiä aiheita ja toimintatapoja, joiden opiskelemisesta on hyötyä kaikille Ecomin käyttäjille. 2013 2013 -merkistä tunnistat uudet ominaisuudet Ohjeita käsikirjan

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

Lisätiedot

Virtuaalifunktiot ja polymorfismi

Virtuaalifunktiot ja polymorfismi Virtuaalifunktiot ja polymorfismi 16 Virtuaalifunktiot ja polymorfismi Polymorfismi on niin tehokas olio-ohjelmoinnin ominaisuus, että tulet varmastikin käyttämään sitä lähes kaikissa C++-ohjelmissasi.

Lisätiedot

Tilastolliset ohjelmistot 805340A. Pinja Pikkuhookana

Tilastolliset ohjelmistot 805340A. Pinja Pikkuhookana Tilastolliset ohjelmistot 805340A Pinja Pikkuhookana Sisältö 1 SPSS 1.1 Yleistä 1.2 Aineiston syöttäminen 1.3 Aineistoon tutustuminen 1.4 Kuvien piirtäminen 1.5 Kuvien muokkaaminen 1.6 Aineistojen muokkaaminen

Lisätiedot

RYHTI 4.0 Huoltokirja käyttöohje

RYHTI 4.0 Huoltokirja käyttöohje RYHTI 4.0 Huoltokirja käyttöohje https://senaatti.ryhti.fi RYHTI - tuki Puh. 010 759 2300 (ma-pe 07.00-17.00) senaatti@granlund.fi Aloitussivu Prosessit, joihin käyttäjällä on kohteessa oikeus. Prosessivalikosta

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana

Tekstikontrollit LUKU. Tekstin ja sanomien esittäminen valintaikkunoissa. Tekstin muokkaaminen suorituksen aikana. Tiedon tarkistaminen syötön aikana OSA II LUKU 5 85 5 LUKU Tekstin ja sanomien esittäminen valintaikkunoissa Tekstin muokkaaminen suorituksen aikana Tiedon tarkistaminen syötön aikana Kontrollien toiminnan laajentaminen aliluokkien avulla

Lisätiedot

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6

Webforum. Version 14.4 uudet ominaisuudet. Viimeisin päivitys: 2014-12-6 Webforum Version 14.4 uudet ominaisuudet Viimeisin päivitys: 2014-12-6 Sisältö Tietoja tästä dokumentista... 3 Yleistä... 4 Yleistä & hallinnointi... 5 Dokumentit... 5 Perättäinen tarkistus- ja hyväksymisprosessi...

Lisätiedot

DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/

DXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DXL Library ja DXL-kielen olemus Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DOORS extension Language DXL on DOORSin laajennuskieli, jolla voidaan kehittää lisätoiminnallisuutta.

Lisätiedot

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

Lisätiedot

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4) 2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi

Lisätiedot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Microsoft SQL käyttö Yleistä VisualStudiosta Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen: - sovellushallintaan -

Lisätiedot

BaseMidlet. KÄYTTÖOHJE v. 1.00

BaseMidlet. KÄYTTÖOHJE v. 1.00 KÄYTTÖOHJE v. 1.00 KUVAUS BaseMidlet on matkapuhelimessa toimiva sovellus jolla voi etäkäyttää Tiimi 7000 sarjan säätimiä. Copyright Team-Control Oy, oikeudet muutoksiin pidätetään. TiiMi on Team-Control

Lisätiedot

1. Adobe Digital Editions ohjelman käyttöönotto

1. Adobe Digital Editions ohjelman käyttöönotto 1. Adobe Digital Editions ohjelman käyttöönotto Useimmat verkkokaupassa myytävät e-kirjat on suojattu Adobe DRM suojauksella. Näitä e-kirjoja voi lukea vain Adobe Digital Editions ohjelmalla, joka on asennettava

Lisätiedot

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010 11. Luokka Opetellaan seuraavaksi, miten omia luokkia kirjoitetaan. Aikaisemmin olikin jo esillä, että luokka on tietorakenne, joka sisältää sekä tiedot (attribuutit) että niitä käsittelevät aliohjelmat

Lisätiedot

Brother ScanViewerin opas ios- / OS X -järjestelmille

Brother ScanViewerin opas ios- / OS X -järjestelmille Brother ScanViewerin opas ios- / OS X -järjestelmille Versio 0 FIN Kuvakkeiden selitykset Tässä käyttöoppaassa käytetään seuraavaa vinkkimerkintää: VINKKI Vinkit kertovat, miten eri tilanteissa voi toimia

Lisätiedot

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015

Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015 Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 Oppilaat saavat vuoden 2016 alusta käyttöönsä oppilaitoksen sähköpostin ja muita palveluita Microsoftin Office365:sta. Oppilaiden sähköposti on muotoa

Lisätiedot

SQL Buddy JAMK Labranet Wiki

SQL Buddy JAMK Labranet Wiki Page 1 of 9 SQL Buddy JAMK Labranet Wiki Sisällysluettelo Yleistä SQL Buddy:sta kotisivu :http://sqlbuddy.com/ SQL Buddy on kevyt hallintatyökalu MySQL-tietokannalle. Järjestelmävaatimukset Serverin vaatimukset

Lisätiedot

A274101 TIETORAKENTEET JA ALGORITMIT

A274101 TIETORAKENTEET JA ALGORITMIT A274101 TIETORAKENTEET JA ALGORITMIT PERUSTIETORAKENTEET LISTA, PINO, JONO, PAKKA ABSTRAKTI TIETOTYYPPI Tietotyyppi on abstrakti, kun se on määritelty (esim. matemaattisesti) ottamatta kantaa varsinaiseen

Lisätiedot

Adobe Premiere Elements ohjeet

Adobe Premiere Elements ohjeet Adobe Premiere Elements ohjeet 1. Käynnistä ohjelma kaksoisnapsauttamalla työpöydän kuvaketta. 2. Avautuvasta Elements-ikkunasa valitse a. New Project jos aloitat uuden videoeditoinnin. b. Open Project

Lisätiedot