Ciao a tutti, questo 3d servirà per parlare dei componenti del repository paxtibi (si tratta di codice del nostro Stilgar). Nell'installare i tuoi package (nella fattispecie paxjson_package.lpk) ho riscontrato il seguente errore su mac os
paxjsgl.pas(186,25) Error: Incompatible type for arg no. 1: Got "$gendef0", expected "Pointer"
Il pezzo di codice è
procedure TGenericListTypeHandle.parseType(aObject: aType; arrayNode: TJSONArray);
var
idx: integer;
item: TCastContainedType;
handlers: THandlerList;
h: TJsonTypeHandler;
factory: TFactory;
childNode: TJSONData;
begin
getHandlers(tkClass, handlers);
factory := GetJSONFactory(TCastContainedType);
for idx := 0 to arrayNode.Count - 1 do
begin
childNode := arrayNode[idx];
item := factory(TCastContainedType) as TCastContainedType;
for h in handlers do
begin
if h.parse(item, nil, childNode) then
begin
aObject.Add(item);
break;
end;
end;
end;
handlers.Free;
end;
Nello specifico la riga " aObject.Add(item); "
Ovviamente la soluzione è
{$ifdef Darwin}
aObject.Add(@item);
{$endif}
Quello che mi chiedo è se questi pkg li hai provati anche su linux o solo su windows. Perchè per mac posso correggere io, ma nel caso non fosse già stato fatto bisogna farlo anche per linux.
Devi ancora applicare la seguente modifica nella unit paxjsgl
Se la applichi compila corretta e installa il package
procedure TGenericListTypeHandle.parseType(aObject: aType; arrayNode: TJSONArray);
var
idx: integer;
item: TCastContainedType;
handlers: THandlerList;
h: TJsonTypeHandler;
factory: TFactory;
childNode: TJSONData;
begin
getHandlers(tkClass, handlers);
factory := GetJSONFactory(TCastContainedType);
for idx := 0 to arrayNode.Count - 1 do
begin
childNode := arrayNode[idx];
item := factory(TCastContainedType) as TCastContainedType;
for h in handlers do
begin
if h.parse(item, nil, childNode) then
begin
{$ifdef Darwin}
aObject.Add(@item);
{$else}
aObject.Add(item);
{$endif}
break;
end;
end;
end;
handlers.Free;
end;
Se lancio il programma jsonserver mi restituisce il seguente errore.
An unhandled exception occurred at $00000001033EE236:
EStringListError: List index (-1) out of bounds
$00000001033EE236
$00000001033B763D
Se faccio debug e imposto un brackpoint sulla prima riga del progetto (per intenderci su ProcessParameters;) mi restituisce
"Il progetto jsonserver ha sollevato una eccezzione di classe 'EConvertError' con messaggio: Invalid argument index in fomrat "[%-16s]|[%-9s]|[%d.%d]|[%s" "
Ma ho guardato e non ci sono parametri passati all'eseguibile dall'ide. Idee?