AGB  ·  Datenschutz  ·  Impressum  







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

Integerüberlauf bei Hash-Funktion

Ein Thema von cltom · begonnen am 10. Apr 2024 · letzter Beitrag vom 12. Apr 2024
Antwort Antwort
hoika

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

AW: Integerüberlauf bei Hash-Funktion

  Alt 10. Apr 2024, 18:41
Hallo,
ein paar Gedanken dazu.

s[i]
Du nimmst immer den gleichen "Problemstring" bei den gleichen Projekten?

Wann genau (bei welchem i) kommt der Überlauf,
welcher Buchstabe steht dort?

Bei den Projektoptionen fällt mir noch das Alignment ein,
was aber hier nicht der Grund sein sollte, aber naja ...

Die Projekte benutzen die gleiche Delphi-Version?
Heiko
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
230 Beiträge
 
Delphi 12 Athens
 
#2

AW: Integerüberlauf bei Hash-Funktion

  Alt 10. Apr 2024, 20:32
Hallo,
ein paar Gedanken dazu.

s[i]
Du nimmst immer den gleichen "Problemstring" bei den gleichen Projekten?

Wann genau (bei welchem i) kommt der Überlauf,
welcher Buchstabe steht dort?

Bei den Projektoptionen fällt mir noch das Alignment ein,
was aber hier nicht der Grund sein sollte, aber naja ...

Die Projekte benutzen die gleiche Delphi-Version?
Danke für die Überlegungen! Ja, hab gerade auf 12.1 aktualisiert. Die alten Projekt-Dateien funktionieren (offenbar mit anderen Einstellungen), ein neues Projekt mit genau der Funktion ergibt den Fehler.

Was meinst Du mit Alignment?

Ja, es ist immer der gleiche Problemstring, ich hab durch Probieren noch andere gefunden, es scheint aber zahlreiche/unbegrenzt Problemstrings zu geben: ich hab hier immer mehr vom Original-String durch x ersetzt, die werfen allesamt einen Fehler:

lbl_xxxxxx_xxxxxxxxxxxxxxx_xxx

je mehr x, desto früher in der Schleife kommt der Fehler. Der "Original-Problemstring" erzeugt erst an Stelle 30 den Fehler.

Dh im Grunde reicht schon

xxx_xxxxxx_x

Völlig eigen, dass das 15 Jahre lang nur aufgrund der Compiler-Projekt-Einstellungen unbemerkt geblieben ist
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.372 Beiträge
 
Delphi 12 Athens
 
#3

AW: Integerüberlauf bei Hash-Funktion

  Alt 10. Apr 2024, 21:03
Wie gesagt, in neueren Delphis sind in neuen Projekten diese Optionen jetzt aktiv.
Genauer ist es in der Basis-"Debug"-Config gesetzt.
Nach "check" in der DPROJ suchen.

Es macht auch einen Unterschied, ob das Projekt neu erstellt wird, oder ob die DPROJ gelöscht und anhand der DPR neu generiert wird.
Also allgemein, aber hierbei nicht, wenn in selber DelphiVersion, aber natürlich wenn uralte DPROJ gelöscht und in neuem Delphi neu generiert.
Angehängte Dateien
Dateityp: 7z Projekte.7z (7,3 KB, 1x aufgerufen)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (10. Apr 2024 um 21:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Integerüberlauf bei Hash-Funktion

  Alt 10. Apr 2024, 22:20
Viele Algorithmen und gerade Hashfunktionen basieren darauf, dass ein Überlauf keinen Fehler erzeugt.
In der Zeile hier wird ja auf den laufenden Wert von h immer der Ordinalwert des aktuellen Zeichens addiert und das wird kann nunmal irgendwann in einer bestimmten Konstellation zu einem Overflow führen.

Ohne diese für diesen Code explizit abzuschalten, war das schon immer eine tickende Zeitbombe.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
cltom

Registriert seit: 22. Sep 2005
230 Beiträge
 
Delphi 12 Athens
 
#5

AW: Integerüberlauf bei Hash-Funktion

  Alt 11. Apr 2024, 07:54
Viele Algorithmen und gerade Hashfunktionen basieren darauf, dass ein Überlauf keinen Fehler erzeugt.
In der Zeile hier wird ja auf den laufenden Wert von h immer der Ordinalwert des aktuellen Zeichens addiert und das wird kann nunmal irgendwann in einer bestimmten Konstellation zu einem Overflow führen.

Ohne diese für diesen Code explizit abzuschalten, war das schon immer eine tickende Zeitbombe.
das ist wohl eine sehr treffende und letztlich entscheidende Zusammenfassung. Ganz glücklich war ich mit dem Ding nie, jetzt muss ich es wohl "schneller" (nach 15 Jahren) als geplant umbauen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:27 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