AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Delphi (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfung

(Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfung

Ein Thema von QuickAndDirty · begonnen am 20. Jul 2020 · letzter Beitrag vom 24. Dez 2020
Antwort Antwort
Seite 2 von 3     12 3   
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.625 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 13:34
Nur mal gerade in den Delphi-Sourcen gesucht, es gibt allein ca. 34-40 Units die das benutzen.
Das würde ja an allen möglichen Stellen abrauchen, kann ich gar nicht glauben
Ganz zu schweigen von externen Libraries und Code.
Macht Emba keine Unit-Tests ?
Es gibt das in vielen (5?) überladenen versionen.
Sprich vielleicht kommt bei dir nie die Array of Bytes version zum Einsatz...
Überladene namen lassen sich leider nicht wirklich toll suchen!

Was ist jetzt besser, nur bei DateUtils zu fixen oder direkt das Übel an der Wurzel ?
Ja, eben. Was nun?

Deine Frage war übrigens auch nicht übel.
Andreas
#PerfMatters

Geändert von QuickAndDirty (22. Jul 2020 um 13:39 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.625 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 13:46
Nun: Bugmeldung im Quality-Portal

S[Low(string)] statt S[1]
oder gleich den Mist mit dem @ lassen, also PAnsiChr(S) statt PAnsiChr(@S[1]) .

Grund: $ZeroBasedStrings sind im NextGen (Android/iOS) aktiv.
http://docwiki.embarcadero.com/RADSt...rings_(Delphi)
Meinst du so
Delphi-Quellcode:
function UTF8ToString(const S: array of Byte): string; overload;
var
  Dest: array[0..511] of Char;
begin
  // _PAnsiChr(@S[1]) ist "ET" _PAnsiChr(@S[0]) müsste dann "CET" sein???
  // SetString(Result, Dest, UTF8ToUnicode(Dest, Length(Dest), _PAnsiChr(@S[1]), S[0])-1);
  SetString(Result, Dest, UTF8ToUnicode(Dest, Length(Dest), PAnsiChr(S), length(S))-1);
  //
end;
und was bedeutet in
UTF8ToUnicode(a, b, c, d) -1 das "-1"
????
Andreas
#PerfMatters
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.625 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 13:50

Delphi-Quellcode:
function UTF8ToString(const S: array of Byte): string; overload;
var
  Dest: array[0..511] of Char;
begin
  SetString(Result, Dest, UTF8ToUnicode(Dest, Length(Dest), _PAnsiChr(@S[1]), S[0])-1); // _PAnsiChr(@S[1]) ist "ET" _PAnsiChr(@S[0]) müsste dann "CET" sein???
end;


Diese Funktion ist anscheinend von ShortString nach "array of bytes" adaptiert worden. Man beachte das S[0]. Das soll ja wohl die Länge sein..
Das denke ich auch. Und die Funkionen ein paar Zeilen darüber muten auch alle wie ein Copy-Pasta aus einer Shortstring Funktion an....
Ich habe einfach nur Angst dass in System.pas zu beheben.... wegen der Abhängigkeiten... vielleicht erwartet Abhängigercode diesen Fehler und trägt dafür Sorge...
Andreas
#PerfMatters

Geändert von QuickAndDirty (22. Jul 2020 um 14:08 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.604 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 14:36
vielleicht erwartet Abhängigercode diesen Fehler und trägt dafür Sorge...
Dann ist das ein Fehler in sich.

Diese Funktion ist definitiv falsch, also gehört sie gebugfixt.
Wenn anderer Code diesen "Fehler" erwartet und ungeprüft übernimmt, dann ist dort jemand selbst Schuld.


Wie das jetzt ganz genau am Besten gefixt werden sollte, da müsste ich auch nochmal genauer drüberschauen,
aber da man die System.pas sowieso nicht wirklich kompilieren/austauschen kann, ist es sowieso egal.
Eine alternative funktionierende Funktion mit TEncoding hast du ja und kannst (erstmal) was Anderes benutzen.

Ansonsten muß dieser Fehler (egal ob mit oder ohne Lösungsvorschlag) als "dringend" im Quality-Portal gemeldet werden.
quality.embarcadero.com
IMHO sollte Emba das auch mindestens für 10.3 und 10.4 schnellstmöglich als Patch rausgeben, denn ich würde das schon als "sehr schweren" Fehler betrachten, da diese Funktionen auch von Delphi selbst öfters benutzt werden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.604 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 14:44
[edit]
please vote

https://quality.embarcadero.com/browse/RSP-10568
https://quality.embarcadero.com/browse/RSP-10581

Also eigentlich hätte man das schon längst beheben können.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (22. Jul 2020 um 14:48 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.625 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 15:32
OK Ich werde dann mal meinem Chef sagen das er das upvoten soll...
Wie heist noch mal der user hier, der auch bei Embarcadero leute kennt?
Ist WANG WANG irgend eine wichtige Person? Weil er stellt sich in den threads echt etwas dumm an.
Warum ist RSP-10568 closed?

bis jetzt nur 9 votes für RSP-10581....
Andreas
#PerfMatters

Geändert von QuickAndDirty (22. Jul 2020 um 18:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.604 Beiträge
 
Delphi 10.4 Sydney
 
#17

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 17:49
Da steht es sei ein Dupplicat, bei sowas bleibt nur ein Ticket offen (meistens das Erste, oder das Bessere) und die Anderen werden als Doppelt markiert und geschlossen.
Blöder Weise kann ich diesmal aber nicht sehen welches das andere Dupplikat ist (das Offene) ... mir war so dass das sonst ebenfalls im Kopf stünde,
aber es könnte sein, dass 10581 das aktuelle Ticket ist.

MEissing und er arbeitet dort sogar, im deutschen Support

Wang Wang: keine Ahnung, kenn ihn nicht (dachte erst er seit einer der Entwickler, aber wohl doch nicht)


Die Meisten entwickeln für Windows ... dort fällt der Fehler scheinbar nicht auf
und zu Viele schauen leider garnicht erst in QC, bzw. ins neue Quality-Portal.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (22. Jul 2020 um 17:53 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
1.654 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 22. Jul 2020, 20:58
Ich glaube auch, das Wang Wang Anwender ist.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.625 Beiträge
 
Delphi 10.3 Rio
 
#19

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 23. Dez 2020, 16:11
Der Fehler ist in Delphi 10.41 samt aller Patches immernoch in der System.pas....
Und auch die System.DateUtils.Pas benutzt immernoch UTF8ToString für Bytearrays....
Warum gucken die nicht in den Fehlerbericht. Im Prinzip ist die Lösung ja fast mitgeliefert.
Andreas
#PerfMatters

Geändert von QuickAndDirty (23. Dez 2020 um 16:16 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.604 Beiträge
 
Delphi 10.4 Sydney
 
#20

AW: (Android) Fehler in DateUtils behoben // TTimezone.Local.ID // Ich bitte um Prüfu

  Alt 23. Dez 2020, 16:31
Im Prinzip ist die Lösung ja fast mitgeliefert.
Das ist zu einfach.
Bei sowas mußt du erst 10 Jahre warten. (vielleicht muß man ja bei Fremdcode vorher die NSA fragen, damit die darin nach bösem russischen Hackercode gucken können)

Vor etwa 10 Jahren hatte ich einen QC erstellt, wo es um ein "Event" für Records geht (erstellen, kopieren/zuweisen und freigeben)
und hatte einen Lösungsvorschlag gleich mitgeliefert (etwa 5 Zeilen Code und zwei/drei Felder in der RTTI des Records).
Jetzt wurde sowas (bissl anders) als nagelneues Feature verkauft ... nennt sich Managed Records.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (23. Dez 2020 um 16:35 Uhr)
  Mit Zitat antworten Zitat
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 +2. Es ist jetzt 11:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf