Inkompatible Typen: AnsiChar und Char
Hallo,
möchte das codierte Passwort wieder in klartext darstellen. Jetzt kommt die fehlermeldung Inkompatible Typen AnsiChar und Char?
Delphi-Quellcode:
SL := TStringList.Create;
try SL.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Password.dat'); if SL.Count>0 then Edit6.Text:=SL[0]; s := Edit6.Text; for y := 1 to Length(s) do s[y] := Char(23 xor Ord(c[y])); // Hier ist das Problem |
AW: Inkompatible Typen: AnsiChar und Char
Wie sind denn y, s und c definiert?
|
AW: Inkompatible Typen: AnsiChar und Char
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var i :integer; SL: TStrings; s: String[255]; c: array[0..255] of Byte absolute s; |
AW: Inkompatible Typen: AnsiChar und Char
Versuchs mal mit
Delphi-Quellcode:
Das "Gegenstück" von Ord ist Chr und nicht Char.
for y := 1 to Length(s) do s[y] := Chr(23 xor Ord(c[y]));
|
AW: Inkompatible Typen: AnsiChar und Char
Die wichtigsten Infos hat jemand vergessen:
Welche Delphi-Verison und wie ist S deklariert? |
AW: Inkompatible Typen: AnsiChar und Char
leider bleibt die Fehlermeldung gleich :-(
Starter Version Berlin 10.1 |
AW: Inkompatible Typen: AnsiChar und Char
Irgendwie erscheint mir das Ganze nicht so recht sinnvoll.
s ist ein String und c ist ein Array an der Adresse von s. Damit sind s und c inhaltlich gleich. Eigentlich hätte ich hier eher sowas erwartet:
Delphi-Quellcode:
for y := 1 to Length(s) do s[y] := Chr(23 xor Ord(s[y]));
|
AW: Inkompatible Typen: AnsiChar und Char
ja, werde noch ein wenig testen!
danke für Eure Hilfe! |
AW: Inkompatible Typen: AnsiChar und Char
Zitat:
Das wurde immernoch nicht gesagt, aber nach der Berlin-Info denke ich fast an einen AnsiString. :roll: |
AW: Inkompatible Typen: AnsiChar und Char
Zitat:
Delphi-Quellcode:
Ist das jetzt unter Berlin anders als unter Delphi 7? Kenne nur das "alte" Delphi ;-)
s : String[255];
|
AW: Inkompatible Typen: AnsiChar und Char
Ohh, übersehn.
Diese ShortStrings, also ShortString und String[123] sind immernoch ANSI-Records ... da hatte sich mit Delphi 2009 nix dran geändert. Nur der LongString-Typ "String" wurde von AnsiString auf UnicodeString geändert. Also ist diese Meldung natürlich korrekt, wenn man hier einen Char (sein D2009 ein WideChar) versucht an einen AnsiChar zuzuweisen. |
AW: Inkompatible Typen: AnsiChar und Char
Zitat:
Delphi-Quellcode:
krachen, da
s := Edit6.Text;
Delphi-Quellcode:
ein Shortstring ist und
s
Delphi-Quellcode:
eine Widechar.
Edit1.Text
Ich würde gleich einen Zeiger übergeben, der als PBytearray agiert, (ich Liebe dieses verschämte herumhampeln um Char/WideChar) denn wie an anderer Stelle schon einmal jemand schrieb, es werden Bytes und keine Chars verschlüsselt. Gruß K-H |
AW: Inkompatible Typen: AnsiChar und Char
Wenn man einen String schon als Bytearray verarbeitet, kann man auf Konvertierung auch ganz verzichten:
Delphi-Quellcode:
for y := 1 to Length(s) do
c[y] := 23 xor c[y]; |
AW: Inkompatible Typen: AnsiChar und Char
Und dann noch statt
Delphi-Quellcode:
Length
Delphi-Quellcode:
verwenden, dann ist man auf der sicheren seite
SizeOf
Gruß K-H |
AW: Inkompatible Typen: AnsiChar und Char
Zitat:
Fritz |
AW: Inkompatible Typen: AnsiChar und Char
Warum über die Länge des Strings laufen, wenn man das Array verarbeitet?
War eher das gemeint?
Delphi-Quellcode:
Nur, da c absolut an s liegt und s irgendwas zwischen 1 und 255 Zeichen enthalten kann, wäre ein SizeOf(c) nicht wirklich hilfreich, da man ja dann auch Bytes verarbeitet, die im aktuellen String nicht belegt sind.
for y := 1 to SizeOf(c) do c[y] := 23 xor c[y];
Also dürfte Length(s) hier schon die sinnvollere Variante sein. |
AW: Inkompatible Typen: AnsiChar und Char
Berlin 10.1...
Strings haben WORDs und nicht bytes! Das gilt auf für Stringlisten!
Delphi-Quellcode:
Wenn S ein Short ist, wird es vom compiler convertiert...
S := Edit1.Text;
Also alle Meldungen richtig... |
AW: Inkompatible Typen: AnsiChar und Char
Delphi-Quellcode:
Funktioniert aber nur, wenn sich wirklich nur Ansi im Unicodestring befindet.
S := Edit1.Text; Wenn S ein Short ist, wird es vom compiler convertiert...
|
AW: Inkompatible Typen: AnsiChar und Char
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz