![]() |
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 |
Re: Wie kann ich 3 PChar addieren
Wenn du unter "Addiren" verstehst, dass es am Ende so aussieht:
Delphi-Quellcode:
dann würde ich es so machen:
pT :='ABCDE12345sdfde';
Delphi-Quellcode:
pT := pchar ( string(p1)+string(p2)+string(p3) );
|
Re: Wie kann ich 3 PChar addieren
Andere Möglichkeit:
![]() Zitat:
|
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 |
Re: Wie kann ich 3 PChar addieren
Zitat:
|
Re: Wie kann ich 3 PChar addieren
Warum neuen Thread?
Es kann ich noch sein dass ich falsch liege. |
Re: Wie kann ich 3 PChar addieren
also zur XOR Verschlüsselung solltest du genug Beispiel hier im Forum finden.
|
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; |
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. |
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