| label15 |  |
| example include | ...lished: // IDE-managed Components TPageControl *PageControl1; TTabSheet *TabSheet2; TButton *btStart; TLabel *Label15; TEdit *eWord; TMemo *mWord; TLabel *lelapsed; TStatusBar *StatusBar1; TButton *btSearch; T... |
| label16 |  |
| example include | ...TButton *btFirst; TButton *btLast; TMainMenu *MainMenu1; TMenuItem *Exit1; TMenuItem *Exit2; TLabel *Label16; TLabel *Label17; TLabel *lRecords; TLabel *lKeys; TCheckBox *cb; TLabel *Label18; TEdit *e... |
| label17 |  |
| example include | ... TButton *btLast; TMainMenu *MainMenu1; TMenuItem *Exit1; TMenuItem *Exit2; TLabel *Label16; TLabel *Label17; TLabel *lRecords; TLabel *lKeys; TCheckBox *cb; TLabel *Label18; TEdit *edFile; TLabel *La... |
| label18 |  |
| example include | ...; TLabel *Label16; TLabel *Label17; TLabel *lRecords; TLabel *lKeys; TCheckBox *cb; TLabel *Label18; TEdit *edFile; TLabel *Label20; TLabel *RK; TLabel *Label22; TButton *btBackup; TButton *b... |
| label1 |  |
| example include | ... TButton *btRestore; TBevel *Bevel1; TBevel *Bevel2; TCheckBox *CheckBox1; TBevel *Bevel3; TLabel *Label1; TButton *btUpdate; TButton *btDelete; TButton *btDupl; TButton *btClear; TButton *btAdd; T... |
| label20 |  |
| example include | ...17; TLabel *lRecords; TLabel *lKeys; TCheckBox *cb; TLabel *Label18; TEdit *edFile; TLabel *Label20; TLabel *RK; TLabel *Label22; TButton *btBackup; TButton *btRestore; TBevel *Bevel1; TBevel... |
| label22 |  |
| example include | ...*lKeys; TCheckBox *cb; TLabel *Label18; TEdit *edFile; TLabel *Label20; TLabel *RK; TLabel *Label22; TButton *btBackup; TButton *btRestore; TBevel *Bevel1; TBevel *Bevel2; TCheckBox *CheckBox1; ... |
| label3 |  |
| example include | ... TButton *btDupl; TButton *btClear; TButton *btAdd; TCheckBox *cbSec; TLabel *lIndex; TLabel *Label3; TButton *btVersion; void __fastcall FormCreate(TObject *Sender); void __fastcall FormClose(TObject *Sender, TC... |
| large |  |
| realisamdoc readfirst | ... index number (0-63) Key is a pointer on a character string, large enough to receive the key (max = 250 characters) recdata is a pointer on the data record related to the key. ... |
| realisamdoc readlast | ...Key is a pointer on a character string, large enough to receive the value of the key (250 char . max) ... |
| realisamdoc readrecord | ... Read a data record. A character string pointer un pointeur is provided as a receiving buffer. The memory allocated for this transfer must be large enough to receive the data. If the length is totally unknown, a call to RecordLength function allows to allocate the right amount of memory. ReadRec... |
| last |  |
| example last | ... Search Last Key... |
| example principle | ...Last Key : Returns the Last Key of the index ... |
| example principle | ...Last Key : Returns the Last Key of the index ... |
| index_summary item43 | ...h Last Key... |
| realisamdoc readfirst | ...ReadNextKey(RetKey,&recdata); // rc = 0 if end of file (last key of index) } ................... ... |
| realisamdoc readlast | ... Read the last key of a specified index. ... |
| realisamdoc writerecord | ...ewRecordNumber. Data can be text or binary. Length is a parameter to provide . For characters strings ended with 0x00, the developer can insert the last byte 0x00, or can insert it when the program read the data. ... |
| leaving |  |
| example formclose | ... Action before leaving... |
| index_summary item37 | ...n before leaving... |
| lelap- |  |
| example backup | ...Caption = AnsiString(nbisam); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(elapsed); First(); Screen->Cursor = oldCursor; Beep(); EnableButtons(); Application->MessageBoxA("Backup Done","RealIsam",MB... |
| example restore | ...Caption = AnsiString(nbk); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(elapsed); First(); Screen->Cursor = oldCursor; Beep(); EnableButtons(); Application->MessageBoxA("Restorati... |
| example start | ...Caption=""; lElap->Caption=""; // GET INDEX VALUE; strcpy(tmp,lIndex->Caption.c_str()); INDEX=atoi(tmp); if (INDEX ... |
| example start | ...c; hund2 = nbsec2*100 + t.ti_hund; float diff = float(hund2-hund1); sprintf(tmp,"%.02f",diff/100.0); int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(tmp); // elapsed); // Close ReOpen if (CheckBox1->Checked==true) { strcpy(name,dict_directory);strcat(name,... |
| lelap |  |
| example include | ... TEdit *eWord; TMemo *mWord; TLabel *lelapsed; TStatusBar *StatusBar1; TButton *btSearch; TLabel *lElap; TButton *btNext; TButton *btPrev; TButton *btFirst; TButton *btLast; TMainMenu *MainMenu1; ... |
| lelapsed |  |
| example include | ... TTabSheet *TabSheet2; TButton *btStart; TLabel *Label15; TEdit *eWord; TMemo *mWord; TLabel *lelapsed; TStatusBar *StatusBar1; TButton *btSearch; TLabel *lElap; TButton *btNext; TButton *btPrev; ... |
| len |  |
| realisamdoc include | ...nt CloseEngine(void); int SetIndexMode(short Index, short Value); int WriteRecord(char *pdata,int len); int RewriteRecord(char *pdata,int len, int RecNumber); int DeleteRecord(int RecNumber); int ReadRecord(char *pdata,int RecNumber); int GetNewRecordNumber(); int WriteKey(sho... |
| realisamdoc include | ...e,short BlockSize,char *ndx, char*dat); int CloseEngine(void); int SetIndexMode(short Index, short Value); int WriteRecord(char *pdata,int len); int RewriteRecord(char *pdata,int len, int RecNumber); int DeleteRecord(int RecNumber); int ReadRecord(char *pdata,int RecNumber); int... |
| realisamdoc readrecord | ...int len = db->ReadRecord(char *buffer,int recdata); db is a database pointer. ... |
| realisamdoc readrecord | ...len : record length of the data record. ... |
| realisamdoc recordlength | ...int len = db->RecordLength(int recdata) db is a database pointer. ... |
| realisamdoc recordlength | ...len = data length ... |
| realisamdoc recordlength | ... .................. //APPLIC.CPP // constructor or setup ................ db = new realisam(); ................ // procedure int rc,len; int recdata; char RetKey[100]; rc = db->ReadDirectKey(0,"microsoft",RetKey,&recdata); if (rc) // success { len = db->RecordLength(re... |
| realisamdoc recordlength | ...ReadDirectKey(0,"microsoft",RetKey,&recdata); if (rc) // success { len = db->RecordLength(recdata); if (len) { buffer = malloc(len+2); .... } else { ... empty ...} } .......... ... |
| realisamdoc recordlength | ...RecordLength(recdata); if (len) { buffer = malloc(len+2); .... } else { ... empty ...} } .......... ... |
| realisamdoc recordlength | ...RecordLength(recdata); if (len) { buffer = malloc(len+2); .... } else { ... empty ...} } .......... ... |
| realisamdoc rewriterecord | ...RewriteRecord(char *buffer, int len, int recdata); db is a database pointer. ... |
| realisamdoc rewriterecord | ...len : data length ... |
| lendata |  |
| realisamdoc writerecord | ...WriteRecord(char *buffer,int lendata); db is the database pointer. ... |
| realisamdoc writerecord | ... buffer contains data to write. lendata is the length of data ... |
| length |  |
| example backup | ...MessageBoxA(RetKey,"Key Length > 30",MB_OK); rc=dict->ReadRecord(buffer,recdata); if (rc) { nbisam++; if (multi==1) { strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer);... |
| example indexbuffer | ...///////////////////////////////////////////// int __fastcall TMainForm::IndexBuffer(char *buff) { char str[BUF_LEN],definition[BUF_LEN]; int length; char Key[MAX_KEY],RetKey[MAX_KEY]; int rc,recdata; char *p; char SKey[MAX_KEY]; int l,i; length=ExtractValue(str,buff,"P",0); // extr... |
| example indexbuffer | ...ar str[BUF_LEN],definition[BUF_LEN]; int length; char Key[MAX_KEY],RetKey[MAX_KEY]; int rc,recdata; char *p; char SKey[MAX_KEY]; int l,i; length=ExtractValue(str,buff,"P",0); // extract a paragraph ... |
| realisamdoc deletekey | ...rc = -1 : key length > 250 characters. ... |
| realisamdoc deleterecord | ...Delete a data record (more precisely, rewrite the record with a null data length). The free space is not managed under realisam. It is recommended to write an utility to copy a old database in a new one if there is too many records deleted. ... |
| realisamdoc open | ...me = filename, with no extension (this function opens or creates the Isam files , according the extension required) datalen = Data physical block length . This value is not the real data length, but an average size. realisam will write data in consecutive blocks of datalen + 8 bytes. If real lengt... |
| realisamdoc open | ...nction opens or creates the Isam files , according the extension required) datalen = Data physical block length . This value is not the real data length, but an average size. realisam will write data in consecutive blocks of datalen + 8 bytes. If real length is less than datalen, a physical block ... |
| realisamdoc open | ...length . This value is not the real data length, but an average size. realisam will write data in consecutive blocks of datalen + 8 bytes. If real length is less than datalen, a physical block of datalen+8 bytes will be allocated and written. If data length is bigger than datalen, a second block is... |
| realisamdoc open | ...utive blocks of datalen + 8 bytes. If real length is less than datalen, a physical block of datalen+8 bytes will be allocated and written. If data length is bigger than datalen, a second block is allocated, and so on... The Windows file management system works with multiples of 1024 bytes, and we r... |
| realisamdoc overview | ...This method is still very convenient for applications such as Internet, Intranet, Text database retrieval, when you need to store and get variable length documents at very high speed. ... |
| realisamdoc overview | ...Maximum key length : 250 characters ... |
| realisamdoc overview | ...Variable length for Data records ... |
| realisamdoc overview | ...Variable length Keys, for any index. ... |
| realisamdoc overview | ...bases, ignores the field notion, and does not try to classify data in numeric, date or text fields : it writes binary or text data according the length specified, and returns all these bytes when a reading operation is required. It is the responsability of the developer to organize records an... |
| realisamdoc overview | ... is the responsability of the developer to organize records and to know how to extract the fields. Realisam is better adapted to store variable length text data like XML strings. ... |
| realisamdoc readfirst | ...-1 if key length > 250 characters ... |
| realisamdoc readlast | ...rc = -1 : key length > 99 characters ... |
| realisamdoc readnext | ...rc = -1 : key length incorrect (> 250 char) ... |
| realisamdoc readprev | ...rc = -1 : key length incorrect (> 99 char) ... |
| realisamdoc readrecord | ...g pointer un pointeur is provided as a receiving buffer. The memory allocated for this transfer must be large enough to receive the data. If the length is totally unknown, a call to RecordLength function allows to allocate the right amount of memory. ReadRecord restores the entire data written p... |
| realisamdoc readrecord | ...len : record length of the data record. ... |
| realisamdoc recordlength | ...len = data length ... |
| realisamdoc recordlength | ...return the length of a data record. This function allows to know the size of a record before reading it, and the developer can allocate memory depending on the size returned. ... |
| realisamdoc rewriterecord | ...len : data length ... |
| realisamdoc rewriterecord | ...Rewrite a data record to a previous location. If data length is bigger than the previous write, the function can create new physical blocks. Developer has to specifiy the new data length. ... |
| realisamdoc rewriterecord | ...us location. If data length is bigger than the previous write, the function can create new physical blocks. Developer has to specifiy the new data length. ... |
| realisamdoc rewriterecord | ...ReadRecord(buffer,recdata); // rc is the record length and supposed to be less than 500 .... process data in buffer..... rc = db->RewriteRecord(buffer, strlen(buffer+1),recdata); } ... |
| realisamdoc writekey | ...-1 = Key length > 99 characters ... |
| realisamdoc writerecord | ...Write a data record at a position previously defined by a call to GetNewRecordNumber. Data can be text or binary. Length is a parameter to provide . For characters strings ended with 0x00, the developer can insert the last byte 0x00, or can insert it when the program read the data. ... |
| realisamdoc writerecord | ... buffer contains data to write. lendata is the length of data ... |
| less |  |
| realisamdoc open | ...This value is not the real data length, but an average size. realisam will write data in consecutive blocks of datalen + 8 bytes. If real length is less than datalen, a physical block of datalen+8 bytes will be allocated and written. If data length is bigger than datalen, a second block is allocate... |
| realisamdoc overview | ...DLL module size, less than 90 KB ... |
| realisamdoc rewriterecord | ...ReadRecord(buffer,recdata); // rc is the record length and supposed to be less than 500 .... process data in buffer..... rc = db->RewriteRecord(buffer, strlen(buffer+1),recdata); } ... |
| letter |  |
| example principle | ...l of this application is to build a dictionary from sequential files provided by the webster dictionnary. Each sequential file is associated to a letter : wb_a, wb_b, .... wb_z. Sequential files should installed in a subdirectory ("dictionary") of your application. The program will build an Isa... |
| letters |  |
| example principle | ...Number of Files to index : 26-1 (26 = all letters of the alphabet) ... |
| example stat | ...Letters... |
| lib |  |
| example download | ...- realisam.lib ... |
| realisamdoc download | ... - realisam.lib ... |
| realisamdoc download | ..."realisam.lib" is the library to link to the application ... |
| library |  |
| realisamdoc download | ..."realisam.lib" is the library to link to the application ... |
| like |  |
| realisamdoc overview | ...bility of the developer to organize records and to know how to extract the fields. Realisam is better adapted to store variable length text data like XML strings. ... |
| limit |  |
| realisamdoc setindex | ...as declared with a unique type of key, it returns an error when trying to write again the same key. For indexes with duplicate keys, there is no limit to the number of duplicate keys. If this function is not called, the default value is 0 (no duplicate keys). ... |
| lindex- |  |
| example backup | ...Cursor = crHourGlass; strcpy(tmp,lIndex->Caption.c_str()); INDEX=atoi(tmp); DisableButtons(); eWord->Text==""; mWord->Clear(); gettime(&t); nbsec1 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; nbrecords=0; nbseq=0; nbisam=0; rc = dict->ReadFirstKey(INDEX,RetKey,&recdata); wh... |
| example restore | ...Clear(); gettime(&t); nbsec1 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; strcpy(tmp,lIndex->Caption.c_str()); INDEX=atoi(tmp); if (INDEX ... |
| example start | ...Caption=""; // GET INDEX VALUE; strcpy(tmp,lIndex->Caption.c_str()); INDEX=atoi(tmp); if (INDEX ... |
| lindex |  |
| example include | ... TButton *btDelete; TButton *btDupl; TButton *btClear; TButton *btAdd; TCheckBox *cbSec; TLabel *lIndex; TLabel *Label3; TButton *btVersion; void __fastcall FormCreate(TObject *Sender); void __fastcall Form... |
| link |  |
| realisamdoc download | ..."realisam.lib" is the library to link to the application ... |
| lkeys- |  |
| example backup | ...Caption = AnsiString(nbseq); lKeys->Caption = AnsiString(nbisam); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(elapsed); First(); Screen->Cursor = oldCursor; Beep(); EnableButtons(); Application->... |
| example formcreate | ...NumberOfKeys(INDEX); lKeys->Caption = AnsiString(rc); if (rc) First(); } //--------------------------------------------------------------------------- ... |
| example restore | ...Caption = AnsiString(nbisam); lKeys->Caption = AnsiString(nbk); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(elapsed); First(); Screen->Cursor = oldCursor; Beep(); EnableButtons()... |
| example start | ...Caption = ""; lKeys->Caption = ""; lRecords->Caption=""; lElap->Caption=""; // GET INDEX VALUE; strcpy(tmp,lIndex->Caption.c_str()); INDEX=atoi(tmp); if (INDEX ... |
| example start | ...Caption = AnsiString(nbrecords); lKeys->Caption = AnsiString(nbk); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; hund2 = nbsec2*100 + t.ti_hund; float diff = float(hund2-hund1); sprintf(tmp,"%.02f",diff/100.0); int elapsed = nbsec2-nbsec1; lElap->Caption =... |
| lkeys |  |
| example include | ... TMenuItem *Exit1; TMenuItem *Exit2; TLabel *Label16; TLabel *Label17; TLabel *lRecords; TLabel *lKeys; TCheckBox *cb; TLabel *Label18; TEdit *edFile; TLabel *Label20; TLabel *RK; TLabel *Label22... |
| local |  |
| realisamdoc overview | ...Companion tools as words indexation and desindexation, local search engines, SQL interface are existing, but they are not integrated in the DLL ... |
| location |  |
| example principle | ...Sequential read after direct read : you can read next or read previous from this location ... |
| realisamdoc rewriterecord | ...Rewrite a data record to a previous location. If data length is bigger than the previous write, the function can create new physical blocks. Developer has to specifiy the new data length. ... |
| lrecords- |  |
| example backup | ...SimpleText = "Number of Keys: " + AnsiString(nbisam); lRecords->Caption = AnsiString(nbseq); lKeys->Caption = AnsiString(nbisam); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(elapsed); First(); Screen->... |
| example restore | ...SimpleText = "Number of Keys: " + AnsiString(nbk); lRecords->Caption = AnsiString(nbisam); lKeys->Caption = AnsiString(nbk); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; int elapsed = nbsec2-nbsec1; lElap->Caption = AnsiString(elapsed); First(); ... |
| example start | ...Caption = ""; lRecords->Caption=""; lElap->Caption=""; // GET INDEX VALUE; strcpy(tmp,lIndex->Caption.c_str()); INDEX=atoi(tmp); if (INDEX ... |
| example start | ...NumberOfKeys(INDEX); lRecords->Caption = AnsiString(nbrecords); lKeys->Caption = AnsiString(nbk); gettime(&t); nbsec2 = t.ti_hour*3600+t.ti_min*60 + t.ti_sec; hund2 = nbsec2*100 + t.ti_hund; float diff = float(hund2-hund1); sprintf(tmp,"%.02f",diff/100.0); int elapsed = ... |
| lrecords |  |
| example include | ... TMainMenu *MainMenu1; TMenuItem *Exit1; TMenuItem *Exit2; TLabel *Label16; TLabel *Label17; TLabel *lRecords; TLabel *lKeys; TCheckBox *cb; TLabel *Label18; TEdit *edFile; TLabel *Label20; TLabel *RK... |
| lt |  |
| example backup | ...ta); if (rc) { nbisam++; if (multi==1) { strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; ... |
| example backup | ... (rc) { nbisam++; if (multi==1) { strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; } ... |
| example backup | ... { nbisam++; if (multi==1) { strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; } els... |
| example backup | ...;P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; } else // extract concatenated items { p1=buffer; ... |
| example backup | ...ReadRecord(buffer,recdata); if (rc) { nbisam++; if (multi==1) { strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer); strcat(html,"</P>\n"); fputs... |
| example backup | ...ReadRecord(buffer,recdata); if (rc) { nbisam++; if (multi==1) { strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,buffer); strcat(html,"</P>\n"); fputs... |
| example backup | ...t;/P>\n"); fputs(html,fp); nbseq++; p1=p+1; p=strchr(p1,'\n'); } strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strc... |
| example backup | ...n"); fputs(html,fp); nbseq++; p1=p+1; p=strchr(p1,'\n'); } strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"... |
| example backup | ... p1=p+1; p=strchr(p1,'\n'); } strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbs... |
| example backup | ...1=p+1; p=strchr(p1,'\n'); } strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; ... |
| example backup | ... p=strchr(p1,'\n'); } strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; } ... |
| example backup | ...{ p1=buffer; p=strchr(p1,'\r'); while (p) { *p=0; p++; *p=0; strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); ... |
| example backup | ... p1=buffer; p=strchr(p1,'\r'); while (p) { *p=0; p++; *p=0; strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(... |
| example backup | ...;B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; } } rc=dict->ReadNextKey(RetKey,&recdata); Application->ProcessMessa... |
| example backup | ... while (p) { *p=0; p++; *p=0; strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,... |
| example backup | ...le (p) { *p=0; p++; *p=0; strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbseq++... |
| example backup | ... { *p=0; p++; *p=0; strcpy(html,"<P><B>"); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; ... |
| example backup | ..."); strcat(html,RetKey); strcat(html,"</B> (<I></I>) "); strcat(html,p1); strcat(html,"</P>\n"); fputs(html,fp); nbseq++; p1=p+1; p=strchr(p1,'\n'); } strcpy(html,"&... |