Autor Beitrag
muetzenjoe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win XP / Win Vista
# Delphi 6 Enterprise; # HTML Editor Phase 5; # Ulead Gif Animator 5;
BeitragVerfasst: So 11.03.07 23:00 
hi@all...

ich verwende folgende funktion in einer dll um bestimmte texte zu codieren und decodieren. nun möchte ich aber bestimmte zeichen wie ' und " dabei ausschließen bzw. ignorieren. ist das möglich und wenn ja wie?

hin und wieder treten bei mir fehler auf wenn ich diese zeichen verwende. ein codierter text sollte also diese zeichen nicht beinhalten!

hier die funktion aus der dll:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
library codier;  

 
uses  
  SysUtils,  
  Classes;  

 
{$R *.res}  

 
function codierer( s : String ):pchar;  
var i:integer;  
begin  
for i := 1 to length(s) do  
s[i] := char(byte(s[i]) xor 81);  
result:=pchar(s);  
end;     

 
exports  
codierer;  

 
begin  
end.


ein beispiel sieht folgender massen aus:

aus
Zitat:
www.google.de
wird
Zitat:
h%%!k~~&&&6>>6=454Q

_________________
Sind wir nicht alle ein wenig Newbee???
eruhenon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 53



BeitragVerfasst: So 11.03.07 23:07 
möglich ist es natürlich das du im vorweg einfach diese zeichen aus dem string löscht (mittels stringreplace oder pos und delete)

alternativ kannst du auch bei deiner for schleife ne abrage machen ob die zeichen in einem bestimmten ascii wertebereich liegen. müsstest ne ascii tabelle zu rate ziehn aber ich glaube das "a" fängt bei 97 an und "A" irgentwo bei 60...
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: So 11.03.07 23:14 
Hallo,

ausblenden Delphi-Quelltext
1:
2:
3:
for i := 1 to length(s) do
  if not (s[i] in ['''','"']) then
    s[i] := char(byte(s[i]) xor 81);

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
muetzenjoe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win XP / Win Vista
# Delphi 6 Enterprise; # HTML Editor Phase 5; # Ulead Gif Animator 5;
BeitragVerfasst: Mo 12.03.07 23:49 
user profile iconLannes hat folgendes geschrieben:
Hallo,

ausblenden Delphi-Quelltext
1:
2:
3:
for i := 1 to length(s) do
  if not (s[i] in ['''','"']) then
    s[i] := char(byte(s[i]) xor 81);


gut das funzt beim decodieren aber nicht beim codieren!

hier mal ein beispiel:

Zitat:
webcheck.pytalhost.d...php?go=check_version

wird zu:
Zitat:
9%%!k~~&432942:!(%0=9>"%54~<&2"<"~"4?5!9!n6>l2942:'4#"8>?

decodiere ich dies dann wird es zu:
Zitat:
http://webcheck.pytalho"t.de/mwc"m"/"end.php?go=check_'er"ion


also wie gesagt... beim zurück decodieren werden die zeichen beachtet aber beim codieren nicht. ich möchte also, dass beim codieren diese zeichen nicht erscheinen!

ist das, was ich vorhabe überhaupt möglich?

_________________
Sind wir nicht alle ein wenig Newbee???
Karlson
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 2088



BeitragVerfasst: Mo 12.03.07 23:52 
Ich würde mal sagen, dass es mit einer einfach XOR Prozedur etwas komplizierter wird. Wenn du aber eine Entschlüssel und eine verschlüssel-Prozedur erstellen würdest, wäre es wohl simpel :)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Di 13.03.07 00:21 
Hallo,

das Problem ist: s xor 81 = " und " xor 81 = s,
also die entsprechenden Zeichen auch ausschließen:
ausblenden Delphi-Quelltext
1:
2:
3:
for i := 1 to length(s) do  
  if not (s[i] in ['''','"','s','v']) then  
    s[i] := char(byte(s[i]) xor 81);

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
muetzenjoe Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win XP / Win Vista
# Delphi 6 Enterprise; # HTML Editor Phase 5; # Ulead Gif Animator 5;
BeitragVerfasst: Di 13.03.07 00:23 
super lannes.... hätte nicht gedacht dass es nun so einfach geht. vielen mega dank!

_________________
Sind wir nicht alle ein wenig Newbee???