AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memo.Text := Ansistring? nur wie

Ein Thema von emsländer · begonnen am 7. Jan 2009 · letzter Beitrag vom 7. Jan 2009
Antwort Antwort
Seite 2 von 3     12 3      
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#11

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:01
Zitat von emsländer:
Das zweite Zeichen ist 0
Dann konntest du das aber auch in Delphi 2007 auch nicht in einem Memo anzeigen, denn das geht über die WinAPI und der gibt man einen PChar mit, der Nullterminiert ist.

Zitat:
nur wenn ich die Datei wie vorher beschreiben eingelesen habe, dann war die komplett in dem AnsiString drin.
Das ist sie mit meinem Code auch. Nur die Anzeige schlägt wegen dem WionAPI-PChar Problem fehl.

Wie du den Codierten Text in einen UnicodeString überträgst, musst du dir noch überlegen. Am besten dekodierst du ihn vor der Konvertierung oder du nutzt nur AnsiString für ihn.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#12

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:09
Zitat von jbg:
Zitat von emsländer:
Das zweite Zeichen ist 0
Dann konntest du das aber auch in Delphi 2007 auch nicht in einem Memo anzeigen, denn das geht über die WinAPI und der gibt man einen PChar mit, der Nullterminiert ist.

Zitat:
nur wenn ich die Datei wie vorher beschreiben eingelesen habe, dann war die komplett in dem AnsiString drin.
Das ist sie mit meinem Code auch. Nur die Anzeige schlägt wegen dem WionAPI-PChar Problem fehl.

Wie du den Codierten Text in einen UnicodeString überträgst, musst du dir noch überlegen. Am besten dekodierst du ihn vor der Konvertierung oder du nutzt nur AnsiString für ihn.
Ich widerpreche Dir an dieser Stelle. Denn die Tests, bevor ich diese Verschlüsselung in meinen Code eingebaut habe, habe ich immer mit Memos zur Kontrolle gemacht.

Wie gesagt, vorher hat mein Programm (besteht aus 45 einzelnen Units und Forms und über 100.000 Zeilen Code) so funktioniert. Diese Datei, die ich da einlese ist mittels JVCeasar verschlüsselt. Ich habe sie immer auf diese Art und Weise eingelesen und dann entschlüsselt - und voila - die in der Datei versteckten XML-Daten waren einwandfrei zu lesen. Mit D2009 klappt das jetzt so nicht mehr!

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#13

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:19
Zitat von emsländer:
Ich widerpreche Dir an dieser Stelle.
Welchem Teil widersprichst du denn? Dem das der AnsiString die gesamten Daten aus der Datei enthält, oder dem Teil in dem ich vom PChar-Problem schreibe?

Zitat:
Diese Datei, die ich da einlese ist mittels JVCeasar verschlüsselt.
Vielleicht ist ja der Entschlüsselungs-Code defekt. (=> nicht richtig nach Unicode migriert)
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#14

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:23
Zitat von jbg:
Zitat von emsländer:
Ich widerpreche Dir an dieser Stelle.
Welchem Teil widersprichst du denn? Dem das der AnsiString die gesamten Daten aus der Datei enthält, oder dem Teil in dem ich vom PChar-Problem schreibe?

Zitat:
Diese Datei, die ich da einlese ist mittels JVCeasar verschlüsselt.
Vielleicht ist ja der Entschlüsselungs-Code defekt. (=> nicht richtig nach Unicode migriert)
Ich widerspreche dem Teil, wo Du schreibst, das ich das in D2007 nicht ins Memo bekomme. Das ging definitiv!

Bis zum Enschlüsselungscode komme ich ja:

Delphi-Quellcode:
  var ansitmp : ansistring;
      stmp : string;
begin


   ansitmp := einlesen ... ; => Hier kann ich den kompletten Inhalt im Debugger sehen.
   
   stmp := ansitmp; oder alle bisher getesteten Funktionen - nichts funktioniert. Es ist nur das erste Zeichen da.


   result := entschlüsselung; .... bisher kein Thema, aber im Moment komme ich gar nicht erst hier hin.
end;

Es muss doch "verdammtnochmal" ne Möglichkeit geben, um das Zeugs in einen String zu packen!

Gruss

EL


Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#15

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:42
Zitat von emsländer:
stmp := ansitmp; oder alle bisher getesteten Funktionen - nichts funktioniert. Es ist nur das erste Zeichen da.


result := entschlüsselung; .... bisher kein Thema, aber im Moment komme ich gar nicht erst hier hin.
Entschlüssle den Text doch vor der Umwandlung in einen UnicodeString. Bei stmp := ansitmp werden nämlich Zeichen, die größer als 127 sind, in andere Code-Points gemappt, was natürlich zu einer Fehlinterpretation führt.



Zitat:
Ich widerspreche dem Teil, wo Du schreibst, das ich das in D2007 nicht ins Memo bekomme. Das ging definitiv!
Also wenn ich " Memo1.Text := 'Hallo'#0'abc'; " in Delphi 2007 eingebe, dann steht da nur "Hallo" im Memo. Das ging also definitiv vorher auch nicht. Was aber ging, war wohl, dass die Daten nicht fehlinterpretiert wurden, weil keine Umsetzung zwischen ANSI und UTF16 stattgefunden hat.
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#16

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:49
Zitat von jbg:
Zitat von emsländer:
stmp := ansitmp; oder alle bisher getesteten Funktionen - nichts funktioniert. Es ist nur das erste Zeichen da.


result := entschlüsselung; .... bisher kein Thema, aber im Moment komme ich gar nicht erst hier hin.
Entschlüssle den Text doch vor der Umwandlung in einen UnicodeString. Bei stmp := ansitmp werden nämlich Zeichen, die größer als 127 sind, in andere Code-Points gemappt, was natürlich zu einer Fehlinterpretation führt.
Wie sollte das gehen? Ich bekomme den Kram nicht einmal entschlüsselt rüber! (Was ja toll wäre)

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#17

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 18:58
Zitat von emsländer:
Wie sollte das gehen? Ich bekomme den Kram nicht einmal entschlüsselt rüber! (Was ja toll wäre)
Das hieße dann aber dass du entweder defekte ANSI Daten in der Datei hast, oder du UTF16 Daten in die Datei geschrieben hast. In letzterem Fall musst du die dann natürlich als UTF16 einlesen.

Wie schreibst du denn die Daten in die Datei?
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#18

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 19:02
Zitat von jbg:
Zitat von emsländer:
Wie sollte das gehen? Ich bekomme den Kram nicht einmal entschlüsselt rüber! (Was ja toll wäre)
Das hieße dann aber dass du entweder defekte ANSI Daten in der Datei hast, oder du UTF16 Daten in die Datei geschrieben hast. In letzterem Fall musst du die dann natürlich als UTF16 einlesen.

Wie schreibst du denn die Daten in die Datei?
Die Daten werden wie folgt geschrieben:

Delphi-Quellcode:
          try
            HttpCon.Post(sURL,strLParam,_sstream);
          except
            raise;
          end;
          sfiledata := _sstream.DataString;
          freeandnil(_sstream);
          _codiert := JvCaesarcipher.EncodeString(fddschl,sfiledata);
           fs := TFilestream.Create(sTmpFileName,fmCreate or fmShareDenyWrite);
             try
               fs.Position := 0;
               fs.Write(Pointer(_codiert)^,Length(_codiert));
             finally
               freeandnil(fs);
            end;
           close;
         end;
Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#19

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 19:17
_codiert hast welchen Datentyp?
  Mit Zitat antworten Zitat
Benutzerbild von emsländer
emsländer

Registriert seit: 21. Aug 2004
Ort: Lengerich
658 Beiträge
 
RAD-Studio 2009 Ent
 
#20

Re: Memo.Text := Ansistring? nur wie

  Alt 7. Jan 2009, 19:19
Zitat von jbg:
_codiert hast welchen Datentyp?
var _codiert : string;

Gruss

EL


Narben am Körper sind ein Zeichen dafür, das man gelebt hat.
Narben auf der Seele sind ein Zeichen dafür, das man geliebt hat.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 13:22 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