Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Arbeitet ein ungarisches Windows anders als ein deutsches/englisches? (https://www.delphipraxis.net/192709-arbeitet-ein-ungarisches-windows-anders-als-ein-deutsches-englisches.html)

SneakyBagels 12. Mai 2017 15:53

Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Mir wurde von einem einzigen Kunden aus Ungarn schon vor ein paar Tagen mitgeteilt, dass mein Tool auf seinem PC seit meinem Update nicht mehr richtig funktioniert.
Es gibt eine Unterfunktion welche einen Hash einer Datei erstellt die in einem Stream liegt. Mit StringOf() mache ich den für den Benutzer in einer ListViewansicht sichtbar.
Mehr passiert da nicht. Stream erstellen, Datei reinladen, die Bytes mit StringOf sichtbar anzeigen.

Wieso funktioniert das auf deutschen, englischen und anderen Windows-Systemen, sogar unter Wine, nicht aber mit einem ungarischen Windows 7 ?
Was hier genau nicht funktioniert weiß ich leider noch nicht. Aber wenn er mir seine fehlerhafte Datei schickt, funktioniert sie auf meinem PC einwandfrei.

Daher die Grunsatzfrage. Was macht ein ungarisches Windows anders als die anderen Windows-e?

nahpets 12. Mai 2017 16:01

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Anderer Zeichensatz?

TiGü 12. Mai 2017 16:03

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Habe ich eine Bildungslücke?
Was ist die StringOf()-Funktion?

Zeige doch mal Quelltext zum Öffnen der Datei, das Laden in den Stream, das Hashen und diese Umwandlung des Hashes in einen String zur Darstellung in einer Listview.

SneakyBagels 12. Mai 2017 16:04

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Das mit dem Zeichensatz ist klar. Nur wird eine Windows-Datei vorzugsweise eine DLL in einen Stream geladen und berechnet. Die sind doch überall gleich.

Der schöne Günther 12. Mai 2017 16:14

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
StringOf -> TEncoding.Default -> "On Windows, System.SysUtils.TEncoding.Default returns the default ANSI code page"

Uwe Raabe 12. Mai 2017 16:15

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Zitat:

Zitat von TiGü (Beitrag 1371138)
Habe ich eine Bildungslücke?
Was ist die StringOf()-Funktion?

Guckst du hier: http://docwiki.embarcadero.com/Libra...Utils.StringOf

Aber genau da steht auch Ursache des Problems:
Zitat:

Konvertiert ein Byte-Array anhand der Standardgebietseinstellung des Systems in einen Unicode-String.
Das heißt, daß die Byte-Sequenz (in diesem Fall der Hash) als Ansi-Zeichen der aktuell eingestellten Code-Page interpretiert wird - und die ist halt nicht auf jedem Windows gleich. Es kann Zufall sein, daß das bisher nicht aufgefallen ist. Der Hash hat sich vermutlich mit dem Update geändert und enthält nun Bytes, die bei der obigen Interpretation unterschiedlich sind.

Wenn man nicht garantieren kann, daß die übergebenen Bytes eine gültige Zeichencodierung darstellen, dann sollte man eine andere Form der String-Umwandlung wählen. Dazu müsste man hier aber mehr über der Hash-Algorithmus wissen.

SneakyBagels 12. Mai 2017 16:37

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Zitat:

Konvertiert ein Byte-Array anhand der Standardgebietseinstellung des Systems in einen Unicode-String.
Und ich dachte immer Byte ist Byte weltweit. Ich benutze ganz normal wie wahrscheinlich jeder andere auch die Jedis dafür.

TiGü 12. Mai 2017 16:38

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Guck an, kannte ich noch nicht.
Auch eine Suche bei Google mit "StringOf delphi" hat das nicht sofort auf der ersten Seite hingezaubert.

Neutral General 12. Mai 2017 16:39

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Zitat:

Zitat von SneakyBagels (Beitrag 1371145)
Zitat:

Konvertiert ein Byte-Array anhand der Standardgebietseinstellung des Systems in einen Unicode-String.
Und ich dachte immer Byte ist Byte weltweit. Ich benutze ganz normal wie wahrscheinlich jeder andere auch die Jedis dafür.

Byte ist Byte.
Aber String ist nicht String. Das ist das Problem ;)

SneakyBagels 12. Mai 2017 16:41

AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
 
Ich hatte gerade kurz darüber nachgedacht SetCodePage zu verwenden aber ich glaube das sind Dinge wo man sich nicht ins System einmischen sollte nehme ich an.
Zitat:

Aber String ist nicht String.
Außer Unicodestring. Der kann soweit ich weiß quasi alle Zeichen aufnehmen. Der sollte doch überall gleich sein.
Ich sehe gerade bei Wikipedia, dass die ungarische Codepage genau wie die deutsche 1250 ist.
https://en.wikipedia.org/wiki/Windows-1250


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz