Hi,
This field was introduced for Delphi compatibility:
The implementation of TMonitor requires this data.
Delphi has this field as well but "hides" the field behind all other
actually declared fields.
If you examine the actual memory size allocated for TObject, you'll
see that an extra fi
writing this mail)
Then this:
https://gitlab.com/freepascal.org/fpc/source/-/issues/40280 is causing a
stack corruption
https://gitlab.com/freepascal.org/fpc/source/-/issues/40392 is causing a
heap corruption
Cheers,
Benito
On 11.08.23 12:57, Jonas Maebe via fpc-pascal wrote:
On 10/08/2023
,
Benito
On 11.08.23 12:46, Jonas Maebe via fpc-pascal wrote:
On 10/08/2023 17:06, Benito van der Zander via fpc-pascal wrote:
I tried to use the LLVM Link-Time-Optimization, -Clflto
I should update the wiki page. Under Debian 11, I can tell FPC to use
gold with lto by specifying the following
Hallo,
I tried to use the LLVM Link-Time-Optimization, -Clflto
I compiled/installed fpc llvm with a separate prefix, which was already
difficult to set up
Then the default linker did not want to link it.
The wiki says to use the gold linker. I do not know how to change the
linker in fpc.cfg
Hallo,
i tried to run my program under LLVM (from july fpc) and it crashes?
Program received signal SIGSEGV, Segmentation fault.
0x0042e5f1in SYSTEM_$$_SYSGETMEM_FIXED$QWORD$$POINTER()
(gdb) bt
#0 0x0042e5f1in SYSTEM_$$_SYSGETMEM_FIXED$QWORD$$POINTER()
#1 0x0041b92ain fp
Hi,
That 99.99% of people does use it, indicates they simply take the
overhead because
of the advantages that the managed types offer.
Or they simply do not know about the overhead
Like I was writing all my code on Windows 98, and never noticed any
overhead, until I started running benchm
very productive optimization idea
Cheers,
Benito
On 24.05.23 13:10, Marco van de Voort via fpc-pascal wrote:
On 24-5-2023 13:00, Benito van der Zander via fpc-pascal wrote:
It is weird that your code calls setjmp? Are you using a non Windows
platform? Comparisons with Delphi should be done
, FPC could at least inline
fpc_setjmp in fpc_pushexceptaddr to make it only one function call.
I regret installing Linux. Everything worked better with Windows 98 and
Delphi 4
Sincerely,
Benito
On 24.05.23 10:14, Marco van de Voort via fpc-pascal wrote:
On 23-5-2023 12:44, Benito van der
Hi,
The compiler will do this wrapping anyway if you use ansistrings, so the
approach with e.g. a generic record will not cause a lot of overhead
in most
cases.
But using strings or anything similar causes a lot of overhead
It is really bad
Bye,
Benito
On 21.05.23 18:03, Michael Van Can
Hallo,
why is a pointer to a char not a pchar (for type helpers)?
program Project1;
{$Mode objfpc}{$H+} {$ModeSwitch typehelpers}
type TPcharHelper = type helper for pchar
function toString(length: integer): string;
end;
function TPcharHelper.toString(length: integer): string;
begin
SetStr
Hi,
https://gitlab.com/freepascal.org/fpc/source/-/issues/38703
I'm afraid that with -O4 it is by design.
-O4 enables -OoUNCERTAIN, and the documentation about -OoUNCERTAIN
notes that:
“If uncertain optimizations are enabled, the CSE algorithm assumes that
— If something is written to a lo
on every commit.
Best,
Benito
On 28.05.22 14:34, Tomas Hajny via fpc-pascal wrote:
On 2022-05-28 13:44, Benito van der Zander via fpc-pascal wrote:
Hi,
I want to show how my program was compiled.
Now I have string like "FPC3.2.2 i386-Linux R+C+" from
compiler := 'FPC'
Hi,
Sort((left, right) begin
if left < right then
result := -1
else if left > right then
result := 1
else
result := 0;
end);
One could introduc
Hallo,
I want to show how my program was compiled.
Now I have string like "FPC3.2.2 i386-Linux R+C+" from
compiler := 'FPC' + {$INCLUDE %FPCVERSION%} + ' ' + {$INCLUDE
%FPCTargetCPU%}+'-'+{$INCLUDE %FPCTargetOS%}+ ' ' + {$IfOpt
R+}+'R+'{$endif} {$IfOpt S+}+'S+'{$endif} {$IfOpt O+}+'O+'{$e
Hi,
I don’t see what the problem with a shortstring buffer is.. strtoint
could not make use of an input string longer than 256 characters
anyway, because the output integer could not have more than 19 digits
anyway.. so an input string longer than this would be useless… just
convert to a sho
Hi,
If it is correct: Can we skip using ShortString buffer and have e.g.
'common' PChar base function for AnsiString/ShortString?
I keep arguing for that as well
You can always create such a function yourself, gain experience using
it, and share the source with us.
I wrote that for y
Hi,
xquery.internals.common.pas(434,80) Fatal: Cannot find PasDblStrUtils used by
xquery.internals.common of package internettools.
that is here: github.com/bero1985/pasdblstrutils
Download src/PasDblStrUtils.pas. Do not clone the repository when you
have a slow internet connection
It on
Hi,
The problem is that, we like OOP inheritance but when we extend classes we are
forced into a single hierarchy.
there is another way to extend classes without inheritance: type helpers
Traits are like reverse type helpers. With the type helper you first
declare the class and then the ext
On 17.02.21 21:43, Ryan Joseph via fpc-pascal wrote:
So where is your 10% performance hit coming from then?
on init:
InitInterfacePointers or TInterfacedObject.AfterConstruction?
I benchmarked it years ago, I do not remember the details.
But InitInterfacePointers was bad. Just look at it:
e back to the
class (sub $0x20,%rdi) before calling the actual method. Because the
class method assumes self is the class and not an interface
Bye,
Benito
On 17.02.21 17:37, Ryan Joseph via fpc-pascal wrote:
On Feb 17, 2021, at 8:27 AM, Benito van der Zander via fpc-pascal
wrote:
6
8
With many small objects it should be faster just because it fits better
in the cache.
Cheers,
Benito
On 17.02.21 14:31, Marco van de Voort via fpc-pascal wrote:
Op 2021-02-17 om 00:02 schreef Benito van der Zander via fpc-pascal:
And there often is a lot of unintentional deep copying. This i
Hi,
And there often is a lot of unintentional deep copying. This is also
why a property returning a record is fairly useless except for
extremely small records like TPoint (and even that is not optimal no
But a managed record to replace an interface, would only contain a
single pointer/cla
Hi,
If you need to create 1000 class instances each frame then you have a
flaw in your logic in my opinion.
I have more like a million class instances
For my XPath stuff, and every returned value is put in a variant-like
class. Selecting all nodes on an GB large XML, could even create almos
There are no significant performance implications of interfaces.
They're essentially a virtual method call, something that one is doing
all day long with Object Pascal classes.
Interfaces are extremely slow. Virtual method calls are also slow. I
have been using interfaces for reference c
strings before your code and then decrementing the reference
counts afterwards would probably work.
The same probably applies to other reference count objects.
Derek
On Thu, Jan 28, 2021 at 11:35 AM Benito van der Zander via fpc-pascal
<mailto:fpc-pascal@lists.freepascal.org>> wrote
+ n*k calls, which is around a third of 3*n*k
Bye,
Benito
On 11.01.21 18:51, Sven Barth via fpc-pascal wrote:
Benito van der Zander via fpc-pascal <mailto:fpc-pascal@lists.freepascal.org>> schrieb am Mo., 11. Jan.
2021, 15:26:
Hi,
perhaps a safe, generic function for this co
Hi,
perhaps a safe, generic function for this copying could be added to the
RTL. Like:
Procedure ManagedMove(const source: T;var dest: T;count: SizeInt);
a) For non-managed types it would be the same as Move(source, dest,
count*sizeof(T))
b) For reference counted types (like strings or i
Hello,
this code:
program Project1;
{$mode objfpc}{$H+}
var a,b, c: string;
begin
a := 'x';
b := 'y';
SetCodePage(RawByteString(b), CP_NONE, false);
c := a+b;
writeln(c);
end.
prints x without y on win32/wine.
Is that supposed to happen?
Bye,
Benito
Hi,
I also made such a thing:
var optionsreader: TCommandLineReader;
begin
optionsreader := TCommandLineReader.create;
optionsreader.declareFile('file', 'The file to be processed');
optionsreader.addAbbreviation('f');
optionsreader.declareFlag('help', '');
optionsreader.addAbbreviati
fpc-pascal wrote:
Op 2020-11-18 om 19:21 schreef Benito van der Zander via fpc-pascal:
where do the SEARCH_DIRs in link.res come from?
Some are hardcoded, and fpc.cfg might contain -Fl lines with paths too
from parsing ld.so.conf on install
___
How are you specifying your cross-compilation sysroot? Make sure you use
the -XR parameter for that,
I use -Fl in ~/.fpc.cfg...
When I use -XR nothing happens. The link.res is the same, except -Fl
prepends the path to link.res and -XR just ignores it. (same for -Xr)
Benito
__
Hi,
where do the SEARCH_DIRs in link.res come from?
My build has started failing, after trying it on a new computer with
"/home/benito/bin/arm-linux-androideabi-ld.bfd:android/libs/armeabi/link42815.res:17:
ignoring invalid character `'' in expression"
link.res starts with:
SEARCH_DIR(/hom
They cannot be used on handles that do not support FileSeek()
(sockets, pipes, stdin/stdout etc.).
Well, it would be better if it could
You can just incrementally resize the return array, when reading
succeeds after seeking fails.
I have a string load function doing that:
https://git
Hi,
I am supposed to find invalid escape sequences when parsing JSON and
replace them with a user defined fallback. Invalid in the sense that the
unicode codepoint is not defined or a missing surrogate, not
syntactically invalid.
For example, any occurrence of \u and \uDEAD should be rep
Hi,
there are also two lines in the json scanner where it tries to repair
numbers with leading dots '.123' to '0.123':
If (FCurTokenString[1]='.') then
FCurTokenString:='0'+FCurTokenString;
They should probably be removed. Not only are those numbers invalid in
json, it is a
here: https://bugs.freepascal.org/view.php?id=37836
On 29.09.20 10:47, Michael Van Canneyt via fpc-pascal wrote:
On Tue, 29 Sep 2020, Benito van der Zander via fpc-pascal wrote:
Hi,
the line numbering of the json parser has been changed recently.
It used to say "Error at line 1&quo
Hi,
the line numbering of the json parser has been changed recently.
It used to say "Error at line 1"... when there was an error in the first
line, but now it says "Error at line 0"...
Was that on purpose, or can someone change it back?
Benito
___
Hi,
I would definitely keep it that way.
As I see it: Redirection or not should not matter, the system should
assume console output.
Things like 'tee' make this concept dubious in any case:
If you pipe output to a program, you don't expect the codepage to change
because of the redirection.
Hi,
that is generating rather odd code (r40721)
project1.lpr:9 begin
00401090 55 push %rbp
00401091 4889e5 mov %rsp,%rbp
00401094 488d6424f0 lea -0x10(%rsp),%rsp
00401099 48895df
Hi,
I had a custom case-insensitive compare function, and it was very slow.
Then I benchmarked it and noticed, case-insensitiveness is rarely needed
in practice.
Then I changed it to something like:
c1:=str1[counter];
c2:=str2[counter];
if c1 <> c2 then begin
c1:=simplewid
Hi,
On 14.10.19 15:44, Ryan Joseph wrote:
var
it: pointer;
obj: TObject;
begin
for it in list do
begin
obj := TObject(it);
// continue on like before using “obj” instead of “it"
end;
That’s our realistic best use case now but it requires 2 extra steps. I hope
Hi,
when I need maximal speed, I use jsonscanner of fpJSON. It should be
vastly faster than a complete parser by not allocating memory or
validating the json.
Although it decodes all the strings in the JSON, which require some
allocations, even if you do not need every string.
It would be fa
Hi James,
I have just copied the function from Lazarus to my project.
Two days ago I even copied it in a new file:
http://hg.benibela.de/internettools/file/f379759c52b9/data/xquery.internals.lclexcerpt.pas
Best,
Benito
On 18.04.2019 03:06, James Richters wrote:
Is there a copyfile for F
Hi,
since I need glasses, it is already troublesome to read a single screen.
With strong glasses just one point on the screen is really sharp and
when the glasses shift a little, you end up seeing only on one eye properly
Cheers,
Benito
Am 16.04.19 um 22:17 schrieb Martin Wynne:
I have on
Perhaps there could be the opposite modifier, so the function cannot be called
with nil. Like
Interesting idea but I’d have to think about it more to know if this is a real
problem I’ve ever experienced.
for example, I store some interfaces in a list, and just replaced the
default list with
should be avoided, unless you actually need
something thread-safe. The classes unit is full of weird stuff
Best,
Benito
Am 07.04.19 um 20:24 schrieb Sven Barth via fpc-pascal:
Benito van der Zander mailto:ben...@benibela.de>>
schrieb am So., 7. Apr. 2019, 15:34:
Writing (list.get
Hi,
the parameter is already optional without any modifier, since you can
always pass nil for it.
Perhaps there could be the opposite modifier, so the function cannot be
called with nil. Like
procedure DoThis(nonnil var obj: TObject);
and then you need to check if it is nil, before calling
Hi,
how should one use TInterfaceList with other interfaces than IUnknown?
Let's say we have a ISomeInterface derived from IUnknown.
When we have an ISomeInterface, we can add it to the list fine, because
an ISomeInterface is an IUnknown.
But when we get it back from the list, it is an IUnk
I wrote one, too: http://benibela.de/sources_en.html#rcmdline
Supports --linux=style and /windows style, and ' and " quotes
On 14.01.2019 10:49, Yann Mérignac wrote:
You can also try this: http://yann.merignac.free.fr/unit-cmdline.html
It's a command line parser I wrote when I needed it a fe
Hi,
something that appears to help is to put units in the interface uses
rather than the implementation uses.
When the unit mentioned in the interface uses, uses the first unit in
its implementation uses, it can inline the functions from the first
unit. Although I would have expected it to
Hi,
that reminds me of https://bugs.freepascal.org/view.php?id=34232
Bye,
Benito
Am 08.01.19 um 23:28 schrieb Sven Barth via fpc-pascal:
Am Di., 8. Jan. 2019, 21:01 hat Ryan Joseph
mailto:r...@thealchemistguild.com>>
geschrieben:
I’ve made constants respect their proper definition now
ll
inline functions in dependency cycles, unit A uses unit B that uses unit
A. Then unit A can't inline something unit B. Any way around that?
Best,
Benito
Am 02.01.19 um 00:41 schrieb Jonas Maebe:
On 2019-01-02 00:19, Benito van der Zander wrote:
procedure TStrBuilder.append(const s
b Yuriy Sydorov:
On 29.12.2018 16:19, Benito van der Zander wrote:
Hi,
even if there's closed issue
https://bugs.freepascal.org/view.php?id=34169 I would like to ask if
it can be reconsidered.
The subject is that SetLength now gives warning: Variable "dynamic
array" of
lined
end;
Best,
Benito
Am 01.01.19 um 22:41 schrieb Jonas Maebe:
On 01/01/19 22:38, Benito van der Zander wrote:
and why is it not inlining the count and append call of this string
builder? It is not using any implementation only function
Routines can only be inlined if they are called a
rveadd(l);
move(p^, next^, l);
inc(next, l);
end;
end.
Bye,
Benito
Am 29.12.18 um 20:31 schrieb Sven Barth via fpc-pascal:
Am Sa., 29. Dez. 2018, 15:23 hat Benito van der Zander
mailto:ben...@benibela.de>> geschrieben:
Hi,
after updating from fpc 3.1 to fpc 3.3, I a
Hi,
after updating from fpc 3.1 to fpc 3.3, I am getting a lot of "function
was not inlined" warnings, e.g. when an inline function depends on a
function not declared in the interface part like:
unit inlinetest;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
function strContains
Hi,
even if there's closed issue
https://bugs.freepascal.org/view.php?id=34169 I would like to ask if
it can be reconsidered.
The subject is that SetLength now gives warning: Variable "dynamic
array" of a managed type does not seem to be initialized
in 3.3.1 and 3.1.1 while it doesn't give
Hi,
perhaps everything would be clearer, if the default property was
accessed with ^ ?
var
wrapper: TWrapper;
begin
wrapper := TWrapper.Create;
wrapper^ := THelperA.Create;
end.
Cheers,
Benito
Am 14.09.2018 um 10:50 schrieb Ryan Joseph:
How should this syntax wo
piles
type a = type pointer;
type b = type pointer;
compiles
Cheers,
Benito
Am 23.08.2018 um 04:23 schrieb Andrew Haines via fpc-pascal:
On 08/12/2018 07:42 AM, Benito van der Zander wrote:
But this does not work, because fpc thinks jclass and jobject are the
same type, so there is
Hi,
when you use JNI functions you always need to repeat "env" a lot:
var
javaClass: jclass;
javaObj: jobject;
begin
//javaClass := ...
javaObj := env^^.NewObject(env, javaClass)
env^^.DeleteLocalRef(env, javaObj);
end;
So I thought you could declare type helpers for jobject and jclas
Hi,
after all these discussions about the frac function, what is the best
way to test if there is a fractional part? That is the most common thing
I use frac for
I have always used frac(x) = 0
Is that worse or better than int(x) = x ?
Benito
_
Hi,
I totally agree that available libraries like the above are what
attract (or keep existing) users to Pascal, not some minor
syntactical sugar.
But syntax features attract the library developers that will write those
attractive libraries
Cheers,
Benito
On 25.04.2018 16:27, Dennis
Hi,
I would like to vote for pointer support...
Cheers,
Benito
On 25.04.2018 15:20, Michael Van Canneyt wrote:
Hello,
Now that interface support has been added to the list of implemented
language
features of pas2js, we're looking to get feedback on what best to
tackle next.
This tim
Hi Fpc-pascal Users,
I simply rely on my IDE (Lazarus, Visual Studio) to complete long
identifier names for me so that I don't have to. *shrugs*
but you still need to read the identifiers and when they are too long,
that takes time, too
How does that look?
No idea how it looked, but
Hi Michael Van,
delete the elements one by one anyway, for instance for interfaces.
that can still be speed up by range deletion. First call _Release on
them all, then remove them with move/fillchar.
Bye,
Benito
___
fpc-pascal maillist -
Hi Paul,
would it be hard to use those IDEs for other languages or can you plugin
another interpreter?
I have an interpreter with Android support, and have been looking for
some syntax highlighting there for a while
Cheers,
Benito
Am 05.12.2017 um 20:36 schrieb Paul Breneman:
On 12/05/2
Hi,
SourceForge gives checksums, too:
Cheers,
Benito
Am 30.11.2017 um 15:47 schrieb Tomas Hajny:
On Thu, November 30, 2017 15:32, kardan wrote:
Wow, both of you managed to avoid my actual question. :)
On Thu, 30 Nov 2017 13:00:07 +0100
kardan wrote:
How can I verify those downloads
Btw, anyone know about a BCD math implementation for Free Pascal, like
it used to be implemented in DR CBASIC? (those were the days... ;-) )
I have one here: http://benibela.de/sources_en.html#bigdecimalmath
Am 23.08.2017 um 02:16 schrieb Paul Nance:
Turbo Pascal also had a BCD unit.
On Au
Hi,
very stupid defaults indeed.
I just had a bug last week, because I was using TStringList as map and
forgot to change it to case-sensitive
Cheers,
Benito
Am 16.08.2017 um 15:48 schrieb Gabor Boros:
2017. 08. 16. 15:21 keltezéssel, Michael Van Canneyt írta:
Because the quotes must be
Hi,
that reminds me of Synapse.
It is always very confusing to people that they need to install
libssl-dev to use https, and libssl does not work.
Because libssl-dev contains libssl.so or so, while libssl only has
libssl.so.1.0.0, which is not found...
And then you tell people to install l
Hi,
Useful if you want to process large amounts of JSON data
without building the whole JSON document in memory.
I have always used jsonscanner for that...
Best,
Benito
On 06/23/2017 08:48 AM, Michael Van Canneyt wrote:
Hello,
I have changed the JSON parser, it is now written on top
Hi Ryan,
In the real world is anyone actually going to type that out every time? I’d bet
most of us have an array class we use and ignore dynamic arrays all together
because we all need basic operations like “add” and “remove”.
I, for one, have a huge list of array utility functions:
http://
Hi,
with a function call: http://bugs.freepascal.org/view.php?id=30333
I had benchmark runs where it spend more time in the initializing
function than doing any calculations
Best,
Benito
On 03/04/2017 06:41 PM, Michael Van Canneyt wrote:
On Sat, 4 Mar 2017, nore...@z505.com wrote:
On
Hi,
how would you handle large output and large stderr?
When you read from one and it writes to the other, the read blocks. Then
it keeps writing to the other buffer, till that is full, and then its
write is blocked, and it is deadlocked.
Probably check NumBytesAvailable before reading?
B
Hi,
huh, why does the build suddenly fail?
Well, FPC 3.0.0 does not have the joStrict option.
It is only there in 3.1.1.
Perhaps there should be two fpc parser entries.
Best,
Benito
On 06.11.2016 17:34, Benito van der Zander wrote:
Hi,
it is better to use TJSONParser than GetJSON
Hi,
it is better to use TJSONParser than GetJSON.
GetJSON is defined as:
procedure DefJSONParserHandler(AStream: TStream; const AUseUTF8:
Boolean; out
Data: TJSONData);
Var
P : TJSONParser;
begin
Data:=Nil;
P:=TJSONParser.Create(AStream,[joUTF8]);
try
Data:=P.Parse;
finally
Then the John Douglas and Douglas McKey are running into the same issue.
Both guys (while living on different parts of the world) created the
same "douglas" namespace!
That's why most languages use domains as namespace
Then you would have
net.delfire.douglas.*
org.msegui.*
and no collision
In the end I stuck in code to increment/decrement a counter, and
looked for it to be explicitly 0 or 1.
Do you need to put a memory barrier around that, or does the critical
section take care of that?
On 10/06/2013 06:55 PM, Mark Morgan Lloyd wrote:
Michael Van Canneyt wrote:
On Sun, 6
Alternatively, just use the XPath implementation of my Internet Tools
(http://www.benibela.de/sources_en.html#internettools).
Works perfectly there.
E.g. process('
', '//@u1:AnAttribute' ).toString
returns 'AttValue'
On 10/05/2013 07:08 PM, Daniel Gaspary wrote:
(Let me know if bugtracke
My Internet Tools (http://www.benibela.de/sources_en.html#internettools)
are made for that.
For example:
uses simpleinternet;
var i: IXQValue;
begin
for i in
process(httpRequest(process('http://www.example.org/the/page/with/the/login/form',
'form(/form, {"username": "'+username+'", "passwo
>Enough digression - if considered carefully a comment about the
purpose of an object belongs in the object definition itself.
I use Pasdoc for that
On 07/12/2013 08:07 AM, vfclists . wrote:
On 11 July 2013 23:07, Benito van der Zander <mailto:ben...@benibela.de&g
or write
In the real program I ended up with
if array1[array2[i]]>42 then
array1[array2[i]] := 42;
Then you have everything twice.
And if you have to change i to j, you might forget to change one
On 03/28/2013 06:26 PM, Jürgen Hestermann wrote:
Benito van der Zander wrote:
arr
I would use Pascal (not C) and write
inc(array1[array2[i]],42);
well, that won't help with min
On 03/28/2013 06:14 PM, Jürgen Hestermann wrote:
Benito van der Zander wrote:
Luckily this can be written as
array1[array2[i]] += 42;
I would use Pascal (not C) and write
inc(array1[arr
suade the core developers
to tolerate extra operators like ⌊ for floor(), and then working out
how to implement them >:-)
Or allow unicode identifier, and than defining ⌊ for ⌊= would just be a
special case of func=
On 03/28/2013 04:45 PM, Mark Morgan Lloyd wrote:
Benito van der Zander wr
Sven Barth wrote:
Am 28.03.2013 16:23, schrieb Benito van der Zander:
Hi,
quite often you need to change a value relatively to another value.
For example:
array1[array2[i]] := array1[array2[i]] + 42;
Luckily this can be written as
array1[array2[i]] += 42;
Which is nice.
However, sometimes
What's the benefit?
Same benefit as += to := ... +
You do not need to rewrite/compute the left side
How will it affect existing code?
Not at all, since old code using this, would not compile
Last but not least, will you implement it?
I can try
On 03/28/2013 04:20 PM, leledumbo wrote:
Hmm..
Hi,
quite often you need to change a value relatively to another value.
For example:
array1[array2[i]] := array1[array2[i]] + 42;
Luckily this can be written as
array1[array2[i]] += 42;
Which is nice.
However, sometimes you do not need addition, but the minimum.
For example:
array1[ar
Hi,
> What is the state of XPath?
> The readme says 'Should be fairly completed' - can I assume it works for
> simple tasks?
If you need xpath, you might also want to look at my Internet Tools (
(http://benibela.de/sources_en.html#internettools), they contain a basically
complete XPath 2 imple
88 matches
Mail list logo