AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal FreePascal Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

Ein Thema von mjustin · begonnen am 11. Feb 2019 · letzter Beitrag vom 12. Feb 2019
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 11. Feb 2019, 14:44
Hallo,
und wenn die die Unit-Reihenfolge umdrehst?

Hier http://wiki.freepascal.org/Unicode_S...n-LCL_programs steht ja auch
Then add LazUTF8 unit in the uses section of main program file.
It must be near the beginning, just after the critical memory managers and threading stuff (e.g. cmem, heaptrc, cthreads).
Heiko

Geändert von hoika (11. Feb 2019 um 17:43 Uhr)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 11. Feb 2019, 14:48
Hallo,
und wenn die die Unit-Reihenfolge umdrehst?

Hier http://wiki.freepascal.org/Unicode_S...n-LCL_programs steht ja auch
Then add LazUTF8 unit in the uses section of main program file
Für das Ausführen des initialization Abschnitts in LazUTF8 macht das keinen Unterschied, so oder so wird erst initialisiert bevor UrlDecode ausgeführt wird.
Michael Justin
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 11. Feb 2019, 17:44
Hallo,
geht ja noch weiter.
Warum steht da near beginning?

Die letzte Unit kann ja die Initialisierungen der anderen wieder aufheben.

Aber bei Lazarus bin ich raus ...
Heiko
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 11. Feb 2019, 17:55
Hallo,
geht ja noch weiter.
Warum steht da near beginning?
"just after the critical memory managers and threading stuff (e.g. cmem, heaptrc, cthreads)."

Das hat den Zweck, Fehler auszuschliessen die durch verspätete Initialisierung entstehen könnten.

Damit is gemeint, dass wenn man zum Beispiel

Delphi-Quellcode:
uses
  MemoryManager, ThreadStuff,
  MyUnit1, MyUnit2, OtherUnit, OtherStuff,
  LazUTF8;
schreibt, und in MyUnit1, MyUnit2, OtherUnit, OtherStuff bereits initialization Code enthalten ist, der vor dem in LazUTF8 ausgeführt wird, dann ist dort noch nicht die UTF-8 Unterstützung aktiviert und "üble Dinge könnten passieren".

Empfohlen wird daher LazUTF8 direkt nach Memory Manager und Thread-Unterstützungs Units zu platzieren:

Delphi-Quellcode:
uses
  MemoryManager, ThreadStuff,
  LazUTF8,
  MyUnit1, MyUnit2, OtherUnit, OtherStuff;
So kann nicht mehr viel schief gehen.
Michael Justin
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.558 Beiträge
 
Delphi 7 Professional
 
#5

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 11. Feb 2019, 18:24
Und was passiert bei
Delphi-Quellcode:
program FPCTest;

uses LazUTF8, IdURI;
// statt bisher
// uses IdURI, LazUTF8;

begin
  WriteLn(TIdURI.URLDecode('%C3%84%C3%96%C3%9C'));
  ReadLn;
end.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#6

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 11. Feb 2019, 20:24
Und was passiert bei
Delphi-Quellcode:
program FPCTest;

uses LazUTF8, IdURI;
// statt bisher
// uses IdURI, LazUTF8;

begin
  WriteLn(TIdURI.URLDecode('%C3%84%C3%96%C3%9C'));
  ReadLn;
end.
Ausgabe: ???

=> die Reihenfolge der Units hat keine Auswirkung auf das Ergebnis
Michael Justin
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Verwenden der LazUTF8 Unit verändert Ergebnis von TIdURI.URLDecode

  Alt 12. Feb 2019, 11:13
Wenn Du LazUTF8 verwendest, willst Du ja auch UTF8...
Klar wäre es schöner, wenn hier eine automatische Typenkonvertierung stattfinden würde, aber so musst Du halt per Hand ran:
1. wie wäre es den Rückgabewer an die Codepage der Konsole, auf der Du ausgibst, anzupassen (vermutlich mit UTF8ToWinCP)?
2. Oder mit SetConsoleOutputCP die Codepage der Konsole auf UTF8 zu ändern?
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:23 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