mtest
{ $Id: mtest.pp,v 1.5 2005/02/14 17:13:12 peter Exp $ This file is part of the Free Pascal run time library. Copyright (c) 1999-2000 by the Free Pascal development team <What does this file> See the file COPYING.FPC, included in this distribution, for details about the copyright. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. **********************************************************************} {$mode objfpc} {$H+} program mtest; uses db,sysutils, mysqldb4; // change to mysqldb3 if you are using version 3. Procedure Log(Const Msg : String); begin Writeln(Msg); end; Procedure DumpFieldDef(F : TfieldDef); begin With F do begin Writeln ('Name : ',Name); Writeln ('FieldNo : ',FieldNo); Writeln ('Size : ',Size); Writeln ('FieldClass : ',FieldClass.ClassName); Writeln ('Required : ',required); Writeln ('Precision : ',Precision); Writeln ('DataType : ',FieldTypeNames[DataType]); Writeln ('InternalCalcField : ',Internalcalcfield); end; end; Procedure DumpField(F : Tfield); begin With F do begin Writeln ('FieldName : ',FieldName); Writeln ('FieldNo : ',FieldNo); Writeln ('Index : ',Index); Writeln ('DataSize : ',DataSize); Writeln ('Size : ',Size); Writeln ('DataType : ',FieldTypeNames[DataType]); Writeln ('Class : ',ClassName); Writeln ('Required : ',required); Writeln ('ReadOnly : ',ReadOnly); Writeln ('Visible : ',Visible); end; end; Procedure DumpFieldData (F : TField); begin With F Do begin Writeln ('Field : ',FieldName); Writeln ('Data type : ',FieldTypeNames[DataType]); Writeln ('As String : ',Asstring); Case Datatype of ftSmallint, ftInteger, ftWord : Writeln ('As longint : ',AsLongint); ftBoolean : Writeln ('As Boolean : ',AsBoolean); ftFloat : Writeln ('As Float : ',AsFloat); ftDate, ftTime, ftDateTime : Writeln ('As DateTime : ',DateTimeToStr(AsDateTime)); end; end; end; Var Dbase : TMySQLDatabase; Data : TMysqldataset; I,Count : longint; Bookie : TBookMarkStr; Procedure ScrollForward; begin Writeln ('Browsing Forward:'); Writeln ('------------------'); With Data do While NOT EOF do begin For I:=0 to FieldCount-1 do DumpFieldData(Fields[I]); Next; end; end; Procedure ScrollBackWard; begin Writeln ('Browsing Backward:'); Writeln ('-------------------'); With Data do While NOT BOF do begin For I:=0 to FieldCount-1 do DumpFieldData(Fields[I]); Prior; end; end; begin if paramcount<>4 then begin Writeln ('Usage : mtest db user pwd sql'); Halt(1); end; Log ('Creating Database'); DBase:=TMySQLDatabase.Create(Nil); Try With DBase do begin Log('Setting database'); DatabaseName:=Paramstr(1); Log('Setting user'); UserName:=Paramstr(2); Log('Setting password'); PassWord := Paramstr(3); Log('Connecting'); Connected:=True; end; Log ('Creating Dataset'); Data:=TMysqlDataset.Create(Nil); With Data do Try Log('Setting database property'); Database:=DBase; Log('Setting SQL'); SQL.text := Paramstr(4); Log('Opening Dataset'); Open; Log('Dumping fielddefs : '); Writeln ('Fielddefs count : ',FieldDefs.Count); For I:=0 to FieldDefs.Count-1 do DumpFieldDef(FieldDefs.Items[i]); Writeln ('Fields count : ',FieldCount); For I:=0 to FieldCount-1 do DumpField(Fields[i]); ScrollForward; ScrollBackWard; Writeln ('Going to last :'); writeln ('---------------'); Last; ScrollBackWard; ScrollForward; Writeln ('Going to first:'); First; Count:=0; Writeln ('Browsing Forward:'); Writeln ('------------------'); With Data do While NOT EOF do begin Inc(Count); If Count=recordCount div 2 then begin Writeln ('Setting bookmark on record'); Bookie:=Bookmark; Writeln ('Got data : "',Bookie,'"'); end; For I:=0 to FieldCount-1 do DumpFieldData(Fields[I]); Next; end; Writeln ('Jumping to bookmark',Bookie); BookMark:=Bookie; Writeln ('Dumping Record : '); For I:=0 to FieldCount-1 do DumpFieldData(Fields[I]); Next; Writeln ('Dumping Next Record : '); For I:=0 to FieldCount-1 do DumpFieldData(Fields[I]); Prior; Prior; Writeln ('Dumping Previous Record : '); For I:=0 to FieldCount-1 do DumpFieldData(Fields[I]); Log('Closing Dataset'); Close; Log('End.'); Finally Free; end; Finally Writeln('Freeing database'); DBase.free; end; end. { $Log: mtest.pp,v $ Revision 1.5 2005/02/14 17:13:12 peter * truncate log }
Antes de comentar: Gran parte de los ejercicios propuestos no tienen librerías debido a que Wordpress las eliminó al verlas como etiquetas HTML. Si sabes/tienes/conoces las librerías que hacen falta, déjalo en los comentarios. Y lo mas importante: Todos los ejemplos fueron realizados por personas con únicamente conocimiento básico del lenguaje, no de programación.
Otro punto importante: Si vas a sugerir un segmento de código en algún lenguaje debes hacerlo así:
- Si es lenguaje C [c]Código en C[/c]
- Si es lenguaje Pascal [pascal]Aquí dentro el código de Pascal[/pascal].
De esta manera el código coloreas el código.
Otro punto importante para muchos que sienten que se les ignora: Todos los comentarios los reviso y en su debido momento los apruebo, pero ojo con el con lo siguiente:Me reservo el derecho de alterar, publicar o no los comentarios as´ como cambiar mis condiciones en el momento que así lo requiera.
¿estas de acuerdo? entonces adelante que ya te he quitado bastante tiempo leyendo esta basura de advertencias :)