Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wie kann ich 3 PChar addieren (https://www.delphipraxis.net/61249-wie-kann-ich-3-pchar-addieren.html)

Aurus 18. Jan 2006 21:28


Wie kann ich 3 PChar addieren
 
Hallo

Ich bin gerade an einem Verschlüsselungsprogramm. Ich muss einen "binären String"(wohl falsches Wort) in eine DLL übergeben und dann weiterverarbeiten.


Var
p1 :PChar;
p2 :PChar;
p3 :PChar;
pT :PChar;
begin

p1 :='ABCDE';
p2 :='12345';
p3 :='sdfde';

pT := p1 + p2 + p3;

end;

Warum geht das nicht oder wie muss ich das machen ?

Noch eine Andere Frage: Darf man AnsiString einer DLL übergeben?

Gruss

Aurus

sniper_w 18. Jan 2006 21:36

Re: Wie kann ich 3 PChar addieren
 
Wenn du unter "Addiren" verstehst, dass es am Ende so aussieht:
Delphi-Quellcode:
 pT :='ABCDE12345sdfde';
dann würde ich es so machen:
Delphi-Quellcode:
pT := pchar ( string(p1)+string(p2)+string(p3) );

Khabarakh 18. Jan 2006 21:41

Re: Wie kann ich 3 PChar addieren
 
Andere Möglichkeit: Delphi-Referenz durchsuchenStrCat
Zitat:

Zitat von Aurus
Noch eine Andere Frage: Darf man AnsiString einer DLL übergeben?

Wenn du damit erreichen willst, dass man sie nur noch mit Delphi aufrufen kann: Ja :wink: .

Aurus 18. Jan 2006 21:52

Re: Wie kann ich 3 PChar addieren
 
Hallo zusammen

Danke für den Tipp. Es geht zwar aber nicht wie ich mir das vorgestellt habe.

Ich will in einem String einen Schlüssel einfügen der Werte zwischen 0-255 hat und dann der Text der auch noch in diesem String ist mit diesem String XOR verschlüsseln. Leider klappt das nicht da vermutlich beim verschlüsseln auch Steuerzeichen oder andere Zeichen entstehen die gar keinen Platz einnehemen ?

Soll man für so was eher ein Stream verwerden ?


Gruss

Aurus

Helmi 18. Jan 2006 21:56

Re: Wie kann ich 3 PChar addieren
 
Zitat:

Zitat von Aurus
Hallo zusammen

Danke für den Tipp. Es geht zwar aber nicht wie ich mir das vorgestellt habe.

Ich will in einem String einen Schlüssel einfügen der Werte zwischen 0-255 hat und dann der Text der auch noch in diesem String ist mit diesem String XOR verschlüsseln. Leider klappt das nicht da vermutlich beim verschlüsseln auch Steuerzeichen oder andere Zeichen entstehen die gar keinen Platz einnehemen ?

Soll man für so was eher ein Stream verwerden ?


Gruss

Aurus

neue Frage = neuer Thread :!:

Aurus 18. Jan 2006 22:06

Re: Wie kann ich 3 PChar addieren
 
Warum neuen Thread?

Es kann ich noch sein dass ich falsch liege.

Luckie 18. Jan 2006 22:08

Re: Wie kann ich 3 PChar addieren
 
also zur XOR Verschlüsselung solltest du genug Beispiel hier im Forum finden.

Aurus 18. Jan 2006 22:22

Re: Wie kann ich 3 PChar addieren
 
Es geht nicht um XOR-Beispiele.

Ich habe schon ein paar Verschlüsselungsprogramme geschieben, aber nie mit PChar.

Ich will einen String den ich mit PChar in eine DLL mit XOR verschlüsseln.
Ich verwende einen Schlüssel der mit einem Zufallsgenerator erstellt wurde.

Doch ich komme weniger Zeichen zurück. Anders gesagt die Grösse der PChar nicht immer gleich Grosse.


Wenn der Eingangsstring 30 Zeichen hat sollte ich ich auch 30 Zeichen zurück bekommen.


Das kann ich mir nicht erklären.


Gruss

Aurus



Function DLLCKey(A:PChar;Faktor:Integer):PChar;
var
intGr :Integer;
intZA :Integer;
intZB :Integer;
IntB1 :Byte;
intB2 :Byte;
strTxt :PChar;
strKey :PChar;
strTot :PChar;
strFak :PChar;
const
K1 =16;
begin

Randomize;

strKey :='';

//Zufallsschlüssel erstellen
For intZA :=1 to K1 do
begin
strKey := strKey + Random(255);
end;


intZB := 0;
strTxt := A;
strFak := PChar(IntToHex(Faktor,6));
strTot :=pchar(string(strKey)+ string(strTxt)+string(strFak));
intGr :=Length(strTot);



//Verschlüsseln
For intZA := K1 to intGr - 1 do
begin

inc(intZB);
if intZB > K1 then intZB :=1;
IntB1 := Ord(strTot[intZA]);
intB2 := ORD(strKey[intZB]);
strTot[intZA] :=Char(intB1 XOR intB2);
end;


Result := strTot;

end;

Mystic 18. Jan 2006 23:07

Re: Wie kann ich 3 PChar addieren
 
In einem PChar darf das Zeichen #0 nicht mittendrin vorkommen. Es darf nur und muss am Ende des PChars stehen.

Da deine Methode zur Schlüsselerzeugung und das XOR höchstwahrscheinlich früher oder später ein #0 hervorbringt, wird der PChar so vorzeitig terminiert.

Aurus 19. Jan 2006 08:38

Re: Wie kann ich 3 PChar addieren
 
Hallo Mystic

Da wirst du wohl recht haben. Nur wie verhindere ich dass es eine Null gibt?


Gruss

Aurus


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 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