AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 12 ist offiziell da!!!

Ein Thema von wjjw · begonnen am 7. Nov 2023 · letzter Beitrag vom 29. Nov 2023
Antwort Antwort
Seite 5 von 20   « Erste     345 6715     Letzte »    
skybibo

Registriert seit: 23. Jun 2008
Ort: NRW
25 Beiträge
 
Delphi 12 Athens
 
#41

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 12:20
Bei der gleichzeitigen Verwendung von Delphi 11 und Delphi 12 habe ich Probleme bei der Verwendung der Parnassus Tools (Bookmarks und Navigator).

Bei Delphi 10.4 wurde für die Parnassus Core die DLL ParnassusCoreEditor_XSydney.dll verwendet. Bei Delphi 11 und Delphi 12 ist es nun ParnassusCoreEditor.dll. Dadurch lassen sich bei mir die Parnassus Tools nicht gleichzeitig in Delphi 11 und Delphi 12 nutzen.

Gibt es hierzu eine Lösung?
Bernd

Geändert von skybibo ( 8. Nov 2023 um 12:50 Uhr) Grund: Rechtschreibfehler korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#42

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 13:47
Nur so 'ne Idee: Pack die DLLs für die verschiedenen Delphi Versionen in separate Verzeichnisse.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
skybibo

Registriert seit: 23. Jun 2008
Ort: NRW
25 Beiträge
 
Delphi 12 Athens
 
#43

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 14:08
Hallo Uwe,

das hatte ich auch schon probiert und unter Experts in der Registry die Pfade angepasst. Leider ist der Pfad für die ParnassusCoreEditor.dll außerhalb von ../BDS/22.0.. (Computer\HKEY_CURRENT_USER\Software\Parnassus OU\Core).

Ich befürchte dass ich an der Stelle auf ein Update von Embarcadero hoffen muss.

Ich finde es nur schade, dass man das Konzept mit der Delphi Version hinter dem Namen nicht weiter geführt hat.
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#44

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 14:26
Du könntest eine Batchdatei zum Starten von Delphi nutzen, die vorher den Pfad in der Registry umschaltet.

Da ein direkter Pfad für die DLL bekannt ist, dürften Side-by-Techniken wie .config Dateien nicht funktionieren.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 15:08
Kurzer Test. REST-API schon wieder kaputt ausgeliefert. Ist ja toll, was ein Schrott.

Leerzeichen und andere Sonderzeichen in Parametern werden falsch kodiert. Aus
Code:
https://test.de?param=my space
sollte werden
Code:
https://test.de?param=my%20space
Delphi macht aber
Code:
https://test.de?param=my%2520space
daraus.

Das heißt, das Ding wird doppelt kodiert und somit das Prozentzeichen auch. Dabei fällt jeder API-Call auf die Nase, der irgendwas mit Zeichen im Aufruf hat, die nicht im Alphabet oder Nummern sind. Dürfte für ein bisschen Spaß sorgen.
Das ist aufgrund des Fixes für meinen Report RSP-38522 passiert. Da haben sie wohl nicht begriffen wie das richtig gefixt werden muss. Und übrigens werden Spaces in Query Parametern mit + codiert und nicht mit %20. %20 gilt nur für die URL ohne Query-Part.

Beispiel: www[dot]test[dot]com/meine%20website/app?query=mein+parameter

Du musst die Parameter separat von der URL codieren! Das ist also womöglich auch noch ein Fehler in deinem Code. Wie kommst du zu deiner anfänglichen URL mit dem Space? Wenn du selber eine URl zusammen baust, musst du die Parameter mit TNetEncoding.URL.EncodeForm('my space') codieren:

  url := TNetEncoding.URL.Encode('https://test.de/meine website') + '?param=' + TNetEncoding.URL.EncodeForm('my space');

Geändert von Rolf Frei ( 8. Nov 2023 um 15:28 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#46

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 15:24
Danke für die Anregung, das nochmal zu testen. Der Fehler ist jetzt etwas schwieriger nachzuvollziehen als wahrscheinlich im ursprünglichen Bug-Report vom August. Er tritt jetzt nur noch auf, wenn man den Parameter selbst in die URL mit reinschreibt und nicht mehr, wenn man ihn per "AddParameter" setzt. In D11.2 funktionierten allerdings beide Wege völlig fehlerlos und so sollte es auch weiterhin sein. Es gibt ja diverse Gründe, warum es mal vorkommen kann, dass man nicht AddParameter nutzt, sondern die URL selbst zusammensetzt - in REST-APIs könnte es auch eine durch einen Call vorgegebene URL sein, um weitere Ergebnisse abzurufen (macht die Graph API von Microsoft zum Beispiel). Wäre blöd, wenn Delphi da reingrätscht.

Aber klar, so fällt der Fehler weniger auf.

Beispielprogramm:

Delphi-Quellcode:
program restSpace;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, REST.Client;


var
  myRest: TRESTClient;
  myQuery: TRESTRequest;
  resultText: string;

begin
  myRest:=TRESTClient.Create('https://httpbin.org/');
  myQuery:=TRESTRequest.Create(nil);
  myQuery.Client:=myRest;
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    myQuery.Resource:='get?param=hello world';
    myQuery.AddParameter('param_added','hello world');
    myQuery.Execute;

    if (myQuery.Response.StatusCode=200) and (myQuery.Response.JSONValue<>nil) then begin
      resultText:=myQuery.Response.JSONValue.GetValue<string>('args.param','!! Not found !!');
      Writeln(resultText);
      resultText:=myQuery.Response.JSONValue.GetValue<string>('args.param_added','!! Not found !!');
      Writeln(resultText);
      Readln;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  myQuery.Free;
  myRest.Free;
end.
Ausgabe mit D11.2:

Code:
hello world
hello world
Ausgabe mit D12:

Code:
hello%20world
hello world
Tja, wie vorgehen?
Dein Code ist so falsch.
    myQuery.Resource:='get?param=hello world'; Das darfst du nicht so machen. Du gibts hier eine ungültige URL an. Korrekt wäre:
Delphi-Quellcode:
    
    myQuery.Resource:='get?param=' + TNetEncoding.URL.EncodeForm('hello world');
Sollte deine Serveranwendung wirklich fälschlicherweise ein %20 benötigen, kannst du anstatt EncodeForm() einfach nur Encode() nutzen.

Ich vermutet der Fix für RSP-38522 ist somit schon richtig, allerdings müsste man nun im REST Teil eventuell auch noch was anpassen/Korrigieren. Wenn deine Resource aber Parameter entählt solltest du die Codierung vorzugsweise selber machen, damit du da die Kontrolle hast, was und wie du das codierst.

Geändert von Rolf Frei ( 8. Nov 2023 um 15:36 Uhr)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#47

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 15:37
Dein Code ist so falsch.
    myQuery.Resource:='get?param=hello world'; Das darfst du nicht so machen. Du gibts hier eine ungültige URL an. Korrekt wäre:
Delphi-Quellcode:
    
    myQuery.Resource:='get?param=' + TNetEncoding.URL.EncodeForm('hello world');
Sollte deine Serveranwendung wirklich fälschlicherweise ein %20 benötigen, kannst du anstatt EncodeForm() einfach nur Encode() nutzen.
Hi Rolf,

berechtigter Hinweis, aber das war nur ein schnell zusammengeschriebener Beispiel-Code, um das mit dem Dienst von httpbin gut demonstrieren zu können. In meinem echten Code bekomme ich das an den Stellen, an denen die Parameter auf die Art gesetzt werden, wohl auch durch die Nutzung von "AddParameter" gefixt, was dann letztlich auch eine bessere Lösung ist.

Was Delphi aber selbst beim Kodieren der Ressource macht, ist ja dennoch falsch, wenn die URI doppelt kodiert wird. Ich wollte mal testen, ob das auch beim Kodieren der eigentlichen Ressource (also nicht eines möglichen Parameters) passiert. Denn prinzipiell könnte es in einer API ja auch eine Ressource "/get/customer/Hans Meier" oder so ähnlich geben. Bin aber heute nicht dazu gekommen, mir das anzuschauen.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#48

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 15:46
Hi Rolf,

berechtigter Hinweis, aber das war nur ein schnell zusammengeschriebener Beispiel-Code, um das mit dem Dienst von httpbin gut demonstrieren zu können. In meinem echten Code bekomme ich das an den Stellen, an denen die Parameter auf die Art gesetzt werden, wohl auch durch die Nutzung von "AddParameter" gefixt, was dann letztlich auch eine bessere Lösung ist.

Was Delphi aber selbst beim Kodieren der Ressource macht, ist ja dennoch falsch, wenn die URI doppelt kodiert wird. Ich wollte mal testen, ob das auch beim Kodieren der eigentlichen Ressource (also nicht eines möglichen Parameters) passiert. Denn prinzipiell könnte es in einer API ja auch eine Ressource "/get/customer/Hans Meier" oder so ähnlich geben. Bin aber heute nicht dazu gekommen, mir das anzuschauen.
Da ich selber das Delphi REST-Framework nicht nuntze und das lieber alles selber mache, wie ich es benötige, kann ich hierzu nicht viel sagen. Allerdings müsste Delphi das als "/get/customer/Hans%20Meier" codieren, damit das richtig ist. Der Parameterteil muss allerdings ein + enthalten. Ob das Delphi REST Framework das hier korrekt macht, ist dann natürlich die Frage. Aus diesem Grund mache ich das lieber alles selber so wie es sein müsste und verzichte auf diese Klasse. Wenn du das mal testest, würde es mich schon intressieren was dabei rauskommt.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#49

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 16:08
Ich finde es nur schade, dass man das Konzept mit der Delphi Version hinter dem Namen nicht weiter geführt hat.
Hat man anscheinend doch: Wenn du die alte ParnassusCoreEditor.dll (findest du im 22er-CatalogRepository) unter dem Namen ParnassusCoreEditor_XAlexandria.dll in das Verzeichnis c:\Program Files (x86)\Common Files\ParnassusShared\ kopierst, sollte es funktionieren.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#50

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 16:11
Leider versteckt der Delphi 12 SplashScreen sich immer noch hinter maximierten Fenstern.
Geändert von PeterPanino, damit der Platz auf dem Bildschirm nicht so leer aussieht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 20   « Erste     345 6715     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz