![]() |
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? |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Anderer Zeichensatz?
|
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. |
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.
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
![]() |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
![]() Aber genau da steht auch Ursache des Problems: Zitat:
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. |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
|
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. |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
Aber String ist nicht String. Das ist das Problem ;) |
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:
Ich sehe gerade bei Wikipedia, dass die ungarische Codepage genau wie die deutsche 1250 ist. ![]() |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Wie würde das denn mit Base64 funktionieren? Mit Base64 hatte ich noch nie etwas zu tun.
Würde man hier dann die Bytes des Streams in Base64 wandeln sehe ich das richtig? Vielleicht so?
Delphi-Quellcode:
... EncodeBase64(stream.Memory, stream.Size); // TBytesStream, gefüllt mit einer binary über loadfromfile
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
TNetEncoding nimmt als Eingansparameter einen Stream und schreibt die Ausgabe ebenfalls in einen Stream.
Soap.EncdDecd.EncodeBase64 nimmt einen Stream und gibt einen String zurück. Wären die Resultate denn bei beiden gleich? Falls ja, verwende ich glaube ich EncodeBase64 denn dann spare ich mir eine Stream-Variable. |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
TNetEncoding hat auch eine Funktion EncodeBytesToString, allerdings nimm die keinen Stream als Parameter. |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
Nur noch einmal zum Mitschreiben. Vorher habe ich mit StringOf (also TEncoding und Default Codepage) einen Stream in einen String geändert und dann in einen Hash. Das ging wegen der anderen Codepage oder warum auch immer oder weil string nicht gleich string ist schief. Den Stream mittels Base64 in Base64 zu ändern und dann diesen String den ich als Rückgabe bekomme in einen Hash das funktioniert auch bei anderen Codepages korrekt? |
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Zitat:
|
AW: Arbeitet ein ungarisches Windows anders als ein deutsches/englisches?
Mir wurde gerade mitgeteilt, dass diese Änderung Abhilfe geschafft hat und nun alles funktioniert wie vorgesehen.
Ich konnte das leider nie selber testen, da ich kein Windows in der nötigen Sprache hier habe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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 by Thomas Breitkreuz