AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Alten Code von Delphi 5 benutzen

Ein Thema von Dumpfbacke · begonnen am 11. Mär 2018 · letzter Beitrag vom 13. Mär 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Alten Code von Delphi 5 benutzen

  Alt 11. Mär 2018, 17:32
Könntest Du eventuell ein kleinen beispiel code zeigen der all das beinhaltet?
also wo man alles sehen wie, wie dein encrypt, auch decrypt und wie du beides aufrufst meine ich.
Vielleicht ist ja decrypt falsch, oder du rufst es falsch auf? Hier kann ich nur raten.

PS: es kann gut sein das deine Routine aus einem String einen kaputten String macht (falls eines deiner Bytes ein $00 ist zum beispiel)
Gruß vom KodeZwerg

Geändert von KodeZwerg (11. Mär 2018 um 17:35 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#2

AW: Alten Code von Delphi 5 benutzen

  Alt 11. Mär 2018, 17:52
Hmm..

D5 ANSI
Tokio Unicode

Quick and Dirty:

Delphi-Quellcode:
function TFTPMailForm.Encrypt(const InString: AnsiString; StartKey, MultKey, AddKey: Integer): AnsiString;
var I: Byte;
begin
 Result := '';
 for I:=1 to Length(InString) do
  begin
   Result := Result + AnsiChar(BYTE(InString[I]) xor (StartKey shr 8));
   StartKey := (Byte(Result[I]) + StartKey) * MultKey + AddKey;
  end;
end;
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.596 Beiträge
 
Delphi 7 Professional
 
#3

AW: Alten Code von Delphi 5 benutzen

  Alt 11. Mär 2018, 18:09
Bei Delphi 5 war ein Zeichen eines Strings ein Char.
Ein Char war ein Byte groß.

Man konnte also aus einem Char ein Byte machen und aus 'nem Byte ein Char.

Heute ist ein Char mehr als ein Byte groß, so das die Umwandlung mit Byte(Char) nicht mehr funktioniert. Ein Byte ist jetzt nur noch eine "Teilmenge" von 'nem Char.

Keine Ahnung, wie man Deinen Quelltext nun anpassen muss, damit er weiterhin funktionstüchtig bleibt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Alten Code von Delphi 5 benutzen

  Alt 11. Mär 2018, 19:58
Jupp, soll er nur funktionieren und für aktuelle Delphis "komplett" nutzbar sein, dann Byte>Word und Char/String zu WideChar/UnicodeString
oder String>UTF8String und Char>AnsiChar.

Aber soll es funktionieren und kompatibel zu den Berechnungen des alten Delphi sein, dann String>AnsiString und Char>AnsiChar.
PS: Mit UTF8String wäre es für Unicode "vollständig" nutzbar und teilweise mit dem alten ANSI-Code kompatibel, also im Bereich des ASCII (Chars 0 bis 127, inkl. 0-9,a-z,A-Z).
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Mär 2018 um 20:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Alten Code von Delphi 5 benutzen

  Alt 11. Mär 2018, 22:12
Also ich habe da so meine Bedenken, das die ursprüngliche Version immer richtig funktioniert hat, da beim Verschlüsseln auch Werte unter x20 generiert werden könnten. Und je nach weiterer Verarbeitung könnte das unschöne Folgen zeitigen. M.M.n sollte das Ergebnis einer Verschlüsselung immer ein Array of Byte sein, das dann Hexadezimal oder Base64 o.ä. dargestellt wird.

Und wenn der übergebene String als Array of Byte gecastet wird und statt lenght sizeof, bzw length(str)*sizeof(char), genutzt wird, sollte man auf der sicheren Seite sein.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

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

AW: Alten Code von Delphi 5 benutzen

  Alt 12. Mär 2018, 06:08
Hallo,
ich denke ja, der Code soll funktionieren mit den geringsten Anpassungen,
und das wäre die Lösung von HolgerX

String -> AnsiString.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Alten Code von Delphi 5 benutzen

  Alt 12. Mär 2018, 07:26
Also ich habe da so meine Bedenken, das die ursprüngliche Version immer richtig funktioniert hat, da beim Verschlüsseln auch Werte unter x20 generiert werden könnten. Und je nach weiterer Verarbeitung könnte das unschöne Folgen zeitigen.
Solange du kein WinAPI-Funktionen verwendest stellst selbst $00 kein Problem dar.
Früher zu D1-Zeiten hatte ich mal auch String als Buffer für Datenübertragung im Einsatz. Und dort sind auch $00 vorgekommen.
Einzig wegen der 255-Zeicheneinschränkung habe ich irgendwann auf Byte-Stream gewechselt.

Aber *schön* ist was anderes.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Alten Code von Delphi 5 benutzen

  Alt 12. Mär 2018, 08:11
Also ich habe da so meine Bedenken, das die ursprüngliche Version immer richtig funktioniert hat, da beim Verschlüsseln auch Werte unter x20 generiert werden könnten. Und je nach weiterer Verarbeitung könnte das unschöne Folgen zeitigen.
Solange du kein WinAPI-Funktionen verwendest stellst selbst $00 kein Problem dar.
Früher zu D1-Zeiten hatte ich mal auch String als Buffer für Datenübertragung im Einsatz. Und dort sind auch $00 vorgekommen.
Einzig wegen der 255-Zeicheneinschränkung habe ich irgendwann auf Byte-Stream gewechselt.

Aber *schön* ist was anderes.
Da man (Du schon) selten weiß, wann das API zum Zuge kommt, sollte man auch die Finger davon lassen.
Hier liest man immer wieder, daß irgendjemand über String stolpert, und sich in irgendwelchen Kodierungen verheddert. Ebenso scheint die Adressierung von statischen und dynamischen Arrays in den Bereich des Voodoo zu gehören. Wenn dann noch Pointer ins Spiel kommen, wird es für viele Zauberlehrlinge richtig eng.
(hatte ich schon Records und Wortgrenzen erwähnt?)

Darum finde ich den Hinweis auf mögliche Untiefen auch heute noch sehr wichtig. Vor allem weil es genügend alten Kode gibt, an dem der eine oder andere verzweifelt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  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 16:31 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