* fixed sample io1.pas

git-svn-id: trunk@11632 -
This commit is contained in:
ivost 2008-08-22 20:39:41 +00:00
parent 29295df972
commit e15b2039cb
3 changed files with 52 additions and 32 deletions

View File

@ -5,8 +5,11 @@ interface
{$mode objfpc}
uses
ctypes,
libxml2,
SysUtils;
procedure docdump(doc: xmlDocPtr);
procedure printf(const msg: string; const args: array of const);
procedure printf(const msg: string);
procedure printfn(const msg: string; const args: array of const);
@ -14,6 +17,17 @@ procedure printfn(const msg: string);
implementation
procedure docdump(doc: xmlDocPtr);
var
mem: xmlCharPtr;
size: cint;
begin
mem := nil;
xmlDocDumpMemory(doc, mem, size);
writeln(mem);
xmlFree(mem);
end;
procedure printf(const msg: string; const args: array of const);
begin
write(Format(msg, args));

View File

@ -18,7 +18,8 @@ program io1;
uses
ctypes,
libxml2,
exutils;
exutils,
SysUtils;
const
include: pchar =
@ -28,6 +29,11 @@ const
'<xi:include href="sql:select_name_from_people"/>'#10+
'</document>'#10;
var
res: pchar = '<list><people>a</people><people>b</people></list>';
cur: pchar = nil;
rlen: cint = 0;
(**
* sqlMatch:
@ -39,7 +45,7 @@ const
*)
function sqlMatch(URI: pchar): cint; cdecl;
begin
if assigned(URI) {and (strncmp(URI, 'sql:', 4) = 0)} then
if assigned(URI) and (strlcomp(URI, 'sql:', 4) = 0) then
result := 1
else
result := 0;
@ -56,18 +62,14 @@ end;
*)
function sqlOpen(URI: pchar): pointer; cdecl;
begin
if not assigned(URI) or (strncmp(URI, 'sql:', 4) <> 0) then
if not assigned(URI) or (strlcomp(URI, 'sql:', 4) <> 0) then
exit(nil);
cur := res;
rlen := strlen(res);
result := pointer(cur);
end;
{
if ((URI == NULL) || (strncmp(URI, "sql:", 4)))
return(NULL);
cur = result;
rlen = strlen(result);
return((void *) cur);
}
(**
* sqlClose:
@ -79,12 +81,14 @@ end;
*)
function sqlClose(context: pointer): cint; cdecl;
begin
end; {
if (context == NULL) return(-1);
cur = NULL;
rlen = 0;
return(0);
}
if not assigned(context) then
exit(-1);
cur := nil;
rlen := 0;
result := 0;
end;
(**
* sqlRead:
@ -97,20 +101,21 @@ end; {
* Returns the number of bytes read or -1 in case of error
*)
function sqlRead(context: pointer; buffer: pchar; len: cint): cint; cdecl;
var
ptr: pchar;
begin
if not assigned(context) or not assigned(buffer) or (len < 0) then
exit(-1);
ptr := context;
if len > rlen then
len := rlen;
move(ptr^, buffer^, len);
rlen := rlen - len;
result := len;
end;
{
const char *ptr = (const char *) context;
if ((context == NULL) || (buffer == NULL) || (len < 0))
return(-1);
if (len > rlen) len = rlen;
memcpy(buffer, ptr, len);
rlen -= len;
return(len);
}
var
doc: xmlDocPtr;
@ -160,7 +165,8 @@ begin
(*
* Free the document
*)
xmlFreeDoc(doc);
//xmlDumpDoc(doc);
docdump(doc);
(*
* Cleanup function for the XML library.

View File

@ -769,8 +769,8 @@ function xmlReconciliateNs(doc: xmlDocPtr; tree: xmlNodePtr): cint; XMLCALL; XML
* Saving.
*)
procedure xmlDocDumpFormatMemory(cur: xmlDocPtr; mem: xmlCharPtrPtr; size: pcint; format: cint); XMLCALL; XMLPUBFUN;
procedure xmlDocDumpMemory(cur: xmlDocPtr; mem: xmlCharPtrPtr; size: pcint); XMLCALL; XMLPUBFUN;
procedure xmlDocDumpMemoryEnc(out_doc: xmlDocPtr; doc_txt_ptr: xmlCharPtrPtr; doc_txt_len: pcint; txt_encoding: pchar); XMLCALL; XMLPUBFUN;
procedure xmlDocDumpMemory(cur: xmlDocPtr; var mem: xmlCharPtr; var size: cint); XMLCALL; XMLPUBFUN;
procedure xmlDocDumpMemoryEnc(out_doc: xmlDocPtr; var doc_txt_ptr: xmlCharPtr; var doc_txt_len: cint; txt_encoding: pchar); XMLCALL; XMLPUBFUN;
procedure xmlDocDumpFormatMemoryEnc(out_doc: xmlDocPtr; doc_txt_ptr: xmlCharPtrPtr; doc_txt_len: pcint; txt_encoding: pchar; format: cint); XMLCALL; XMLPUBFUN;
function xmlDocFormatDump(f: PFILE; cur: xmlDocPtr; format: cint): cint; XMLCALL; XMLPUBFUN;
function xmlDocDump(f: PFILE; cur: xmlDocPtr): cint; XMLCALL; XMLPUBFUN;