Italian community of Lazarus and Free Pascal

Programmazione => Componenti Aggiuntivi => Topic aperto da: xinyiman - Ottobre 25, 2019, 02:50:11 pm

Titolo: Paxtibi
Inserito da: xinyiman - Ottobre 25, 2019, 02:50:11 pm
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 è

Codice: [Seleziona]
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.
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 25, 2019, 03:04:33 pm
Mentre se compilo il progetto jsonserver.lpi su mac os (sempre con lazarus 2.1.0) ottengo il seguente errore. Che onestamente a naso non so cosa voglia dire:

app.pas(30,33) Fatal: Syntax error, "<" expected but "." found

riga incriminata

  TTimersHolder = specialize fgl.TFPGObjectList<TTimerObject>;
Titolo: Re:Paxtibi
Inserito da: nomorelogic - Ottobre 25, 2019, 03:21:09 pm
se non ricordo male quell'errore lo si ha compilando con fpc 3.2.0
probabilmente nei generics è cambiato qualcosa

avrei dovuto scrivere sul forum ufficiale quando me ne sono accorto ma...
mea culpa
Titolo: Re:Paxtibi
Inserito da: Stilgar - Ottobre 25, 2019, 03:28:38 pm
Ho compilato con la 3.0.4
Pet Linux compila travis
Così i russi non mi cazziano (e sì un russo mi ha fatto le pulici)

Stilgar
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 25, 2019, 03:52:41 pm
Io uso la

Lazarus 2.1.0 r61758M FPC 3.3.1 x86_64-darwin-cocoa (beta)

Come risolvo per adattarlo a questa versione di fpc?
Titolo: Re:Paxtibi
Inserito da: Stilgar - Ottobre 25, 2019, 03:59:50 pm
Eh...
Fa figo usare le beta :p
Sto cercando di lavorare sulle versioni stabili.
Nomore è quello dei due che scappa avanti (visto che mi aiuta con quei sorgenti e non sarebbe giusto prendersi tutti i meriti. Le sberle sì i meriti no).

Stilgar
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 25, 2019, 04:03:23 pm
Allora nomore attendo tuoi lumi
Titolo: Re:Paxtibi
Inserito da: nomorelogic - Ottobre 30, 2019, 07:11:55 pm
Allora nomore attendo tuoi lumi

hai fatto prima tu ;)
https://forum.lazarus.freepascal.org/index.php/topic,47250.msg337764/topicseen.html#new (https://forum.lazarus.freepascal.org/index.php/topic,47250.msg337764/topicseen.html#new)
Titolo: Re:Paxtibi
Inserito da: Stilgar - Ottobre 30, 2019, 11:06:13 pm
ho pushto la fix suggerita.

:)
Funziona su Mac?

Stilgar
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 31, 2019, 08:24:40 am
Devi ancora applicare la seguente modifica nella unit paxjsgl
Se la applichi compila corretta e installa il package

Codice: [Seleziona]
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;       
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 31, 2019, 08:28:22 am
Mentre il serverjson ora lo compila correttamente
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 31, 2019, 08:35:24 am
Se lancio il programma jsonserver mi restituisce il seguente errore.

Codice: [Seleziona]
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?
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 31, 2019, 08:37:11 am
Scusa ho avuto le traveggole. I parametri ci sono. Ora provo a parametrizzarlo correttamente e vedo cosa esce.
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 31, 2019, 08:41:26 am
Niente, anche parametrizzandolo correttamente "-wp ../../../../../data" mi restituisce l'errore
Titolo: Re:Paxtibi
Inserito da: Stilgar - Ottobre 31, 2019, 08:50:04 am
Dall'errore sembra essere la parte di log.
Prova a commentare i log.
Stilgar
Titolo: Re:Paxtibi
Inserito da: xinyiman - Ottobre 31, 2019, 08:55:06 am
Dall'errore sembra essere la parte di log.
Prova a commentare i log.
Stilgar

Ma se metto il brackpoint sulla prima riga del progetto non ci arriva neanche, come fa ad essere qualcosa del genere? E poi dove devo andare  a commentare i log? Ancora non ho analizzato il tuo codice. Dove li hai messi?