mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 07:19:27 +02:00
* fixed sample io1.pas
git-svn-id: trunk@11632 -
This commit is contained in:
parent
29295df972
commit
e15b2039cb
@ -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));
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user