Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TArray<System.Byte> Fehler (https://www.delphipraxis.net/201225-tarray-system-byte-fehler.html)

berlinchris81 3. Jul 2019 07:06

Delphi-Version: 5

TArray<System.Byte> Fehler
 
Hallo Delphi Freunde, ich habe im Moment folgendes Problem. Ich importiere eine C# WSDL eines SOAP Webservices. Dabei erhalte ich die Meldung "Erwartet: ')' aber '<' erhalten" Meldung. Bisher ging das immer zu importieren, liegt es an C# oder an Delphi 10.3.1, das letzte Mal habe ich die WSDL mit 10.1 erfolgreich importiert (so oft ist ein neuer Import nicht nötig).

----

So sieht die Stelle aus:

Delphi-Quellcode:
procedure Setblob(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);


procedure Medienobjekt_Antwort2.Setblob(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);
begin
  Fblob := ATArray<System.Byte>;
  Fblob_Specified := True;
end;
----

Delphi versieht das '>' Zeichen nach dem "const" mit einer roten Linie und unterbricht beim kompilieren. Das habe ich an mehreren Stellen.

Weiß einer von euch wie ich das Problem "heilen" kann? Gern lege ich auch noch Beispiele nach.


Liebe Grüße aus Berlin

Chris

Schokohase 3. Jul 2019 07:15

AW: TArray<System.Byte> Fehler
 
Der Name das Arguments darf kein
Delphi-Quellcode:
<
oder
Delphi-Quellcode:
>
enthalten.
Delphi-Quellcode:
// Statt
procedure Setblob(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);

// z.B.
procedure Setblob(Index: Integer; const ABuffer: TArray<System.Byte>);

berlinchris81 3. Jul 2019 07:46

AW: TArray<System.Byte> Fehler
 
Okay verstanden, aber wo muss ich das ändern die pas wird aus der WSDL von Delphi automatisch erstellt. Muss ich da in C# was drehen?

Schokohase 3. Jul 2019 08:05

AW: TArray<System.Byte> Fehler
 
Der Delphi WSDL-Import war noch nie ein Quell der Freude. Wenn es etwas komplexer wird, dann versagt der ganz gerne.

Probier das doch mal mit anderen WSDL-Importern aus (der aus dem VS ist recht gut), ob die diese WSDL vernünftig interpretieren können.

berlinchris81 3. Jul 2019 08:10

AW: TArray<System.Byte> Fehler
 
Hallo Schokohase, ich habe jetzt mit suchen/ersetzen die 150 Werte in der pas Datei ausgetauscht.

Funktioniert super. wenn ich die WSDL in C# importiere geht es prima aber dann erhalte ich eine C# Klasse, aber keine .pas Datei.

Ich muss den Webservice in Delphi verwursten :).

Aber trotzdem erstmal Danke für die schnellen Antworten, hast mir erstmal den Tag gerettet.

Danke

Chris

Schokohase 3. Jul 2019 08:30

AW: TArray<System.Byte> Fehler
 
Zitat:

Zitat von berlinchris81 (Beitrag 1435877)
Funktioniert super. wenn ich die WSDL in C# importiere geht es prima aber dann erhalte ich eine C# Klasse, aber keine .pas Datei.

Damit solltest du ja auch nur prüfen, ob die WSDL formal korrekt ist.

Wenn du eine bessere Idee hast, wie man die Korrektheit der WSDL überprüfen kann dann immer her damit.

berlinchris81 3. Jul 2019 08:53

AW: TArray<System.Byte> Fehler
 
So war das nicht gemeint, C# importiert korrekt, alles gut. Ich nehm die Hilfslösung und schreib mir n Kommentar dazu.

Vielen Dank für deine Hilfe...


Chris

peterbelow 3. Jul 2019 11:47

AW: TArray<System.Byte> Fehler
 
Zitat:

Zitat von berlinchris81 (Beitrag 1435869)
Hallo Delphi Freunde, ich habe im Moment folgendes Problem. Ich importiere eine C# WSDL eines SOAP Webservices. Dabei erhalte ich die Meldung "Erwartet: ')' aber '<' erhalten" Meldung. Bisher ging das immer zu importieren, liegt es an C# oder an Delphi 10.3.1, das letzte Mal habe ich die WSDL mit 10.1 erfolgreich importiert (so oft ist ein neuer Import nicht nötig).

----

So sieht die Stelle aus:

Delphi-Quellcode:
procedure Setblob(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);


procedure Medienobjekt_Antwort2.Setblob(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);
begin
  Fblob := ATArray<System.Byte>;
  Fblob_Specified := True;
end;
----

Delphi versieht das '>' Zeichen nach dem "const" mit einer roten Linie und unterbricht beim kompilieren. Das habe ich an mehreren Stellen.

Weiß einer von euch wie ich das Problem "heilen" kann? Gern lege ich auch noch Beispiele nach.


Liebe Grüße aus Berlin

Chris

Das ist ein Bug im WSDL-Importer, da bin ich auch mal drauf gelaufen. Die Syntax der generierten Methode ist nicht korrekt, das <System.Byte> hinter dem Parameternamen hat da nichts zu suchen. Leider hilft da nur nacheditieren der erzeugten Unit, was aber per regular expression search & replace relativ einfach geht.

TurboMagic 3. Jul 2019 19:09

AW: TArray<System.Byte> Fehler
 
Nach dem ja jetzt ein Bug im WSDL Importer identifiziert wurde, dürfte mal jemand
(einer der Finder des Bugs) in QP nachschauen ob der dort schon erfasst ist und
falls nicht diesen erfassen. Dann gibt's eine Chance auf einen Fix, sonst eher nicht.

Und ganz super, falls möglich/erlaubt, wäre es, wenn das betreffende WSDL mit an
den Report gehängt werden könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz