Metódou SaveToFile() si môžeme uľahčiť život, ak chceme jednoducho uložiť celý text a mať pokoj. Príkladom je napr. tvorba textového editoru, alebo podobného programu. Uloženie celého textu, ktorý obsahuje komponent Memo použitím tejto metódy by vyzeralo nasledovne:
Memo1->Lines->SaveToFile(C:\skuska.txt");
Nevýhodou tejto metódy je, že ňou nemôžeme dopisovať na koniec súboru, alebo updatovať len to, čo sa zmenilo. Vždy keď chceme niečo zapísať musíme prepísať celý súbor.
Druhá metóda zápisu je v tomto ohľade omnoho flexibilnejšia. Umožňuje nám dopisovať na koniec súboru a zapisovať napr. po slovách. Pri druhej metóde tzv. starej je to rovnako ako keď ideme načítavať, teda si musíme otvoriť súbor a povedať programu či budeme prepisovať celý súbor, alebo len dopisovať na koniec. Pri tomto postupe však netreba zabudnúť na deklaráciu hlavičkového súboru stdio.h, alebo po novom iba stdio. Celá deklarácia bude vyzerať:
#include <stdio.h>alebo #include <stdio>
Prvou úlohou pri tomto postupe je deklarácia ukazovateľa (pointera) typu FILE. Potom otvoríme príkazom súbor a uvedieme, akú operáciu s ním budeme vykonávať.
FILE *f;
f = fopen("C:\skuska.txt","w");
Príkaz na zapísanie nejakého slova, alebo vety do súboru je nasledovný:
fprintf(f,"n%s","Toto je skuska");
V zátvorke nasledujú po sebe nasledujúce parametre:
1. Pointer, ktorý reprezentuje otvorený súbor, do ktorého zapisujeme
2. Druhý parameter určuje, aký typ dát ideme zapisovať. Do úvodzoviek sa zapíše % a za tým typ dát. V tomto prípade je to s – čiže reťazec. Mohlo by tam byť napr. d,c....atď. Zápis pred tým -n hovorí, že sa bude zapisovať vždy o riadok nižšie.
3. Posledný parameter sú vlastné dáta, alebo odkaz na ne. Vyrobíme si program, ktorý bude po stlačení tlačidla zapisovať do súboru pomocou druhej metódy náš reťazec zadaný do komponenty Edit.
#includeTento program ošetruje hneď dve udalosti. Jednou je, ak nezadáme do poľa Edit žiadny znak. Druhou je, aby sa do súboru zapisovalo hneď od prvého riadku. To je zabezpečené tým, že v prvom zápise fprintf chýba znak n.<vcl.h> #pragma
#include<stdio> hdrstop #include "Unit1.h"
//-------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int p = 0;
//-------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//-------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
FILE *f;
if(Edit1->Text != ""){
if(p == 0){
f = fopen("C:\skuska.txt","a");
fprintf(f,"%s",Edit1->Text);
p++;
}
else{
f = fopen("C:\skuska.txt","a");
fprintf(f,"n%s",Edit1->Text);
}
}
fclose(f);
}
Ďalšiu kapitolu, ktorú tu načneme je načítavanie do nejakých databázových štruktúr, napríklad do tabuľky a načítavanie údajov do štruktúry. Začneme načítaním troch položiek do tabuľky. Nepoužijeme pri tom štruktúru, iba polia znakov. Pôjde o načítanie mena, priezviska a čísla. Vytvoríme si teda textový súbor priamo na disku C, alebo si prepíšete cesty v programe. Bude obsahovať v prvom riadku (nemusí to byť nutne v prvom, môže to byť aj rozhádzané) nejaké údaje napr. Jožko Mrkvička 487. Tento program sa postará o načítanie a výpis do tabuľky. Použité boli komponenty StringGrid a Button.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char meno[15],priezvisko[20];
int cislo;
FILE *f;
f = fopen("C:\skuska.txt","r");
fscanf(f,"%s",meno);
sg->Cells[0][1] = meno;
fscanf(f,"%s",priezvisko);
sg->Cells[1][1] = priezvisko;
fscanf(f,"%d",&cislo);
sg->Cells[2][1] = cislo;
fclose(f);
}
Toto je však len špička ľadovca pri načítavaní, pretože najväčší komfort pri práci s databázou, ku ktorej sa pomaly blížime poskytuje práca, pri ktorej sa využíva načítavanie do štruktúry. Budúci diel bude patriť tejto problematike a demonštrácii používania tohto spôsobu.