AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi [Erledigt] Speichern von RCx-Zeichen in Textdatei
Thema durchsuchen
Ansicht
Themen-Optionen

[Erledigt] Speichern von RCx-Zeichen in Textdatei

Ein Thema von Root2k · begonnen am 16. Jun 2011 · letzter Beitrag vom 17. Jun 2011
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Speichern von RCx-Zeichen in Textdatei

  Alt 17. Jun 2011, 13:20
AnsiString = 1 Byte pro Zeichen
WideString/UnicodeString = 2 byte pro Zeichen
String = SizeOf(Char) Byte pro Zeichen

Also mußt du nur noch Umrechnen, wo Byte und Chars vermischt wird.
$2B or not $2B
  Mit Zitat antworten Zitat
Root2k

Registriert seit: 7. Jun 2011
Ort: Ulm
49 Beiträge
 
Delphi XE Enterprise
 
#12

AW: Speichern von RCx-Zeichen in Textdatei

  Alt 17. Jun 2011, 13:30
Danke dir für diese Information.
Jetzt funktioniert alles wie gewünscht.

Geänderte Zeile:
FStream.Write(Pointer(OutputCrypt.Text)^,Length(OutputCrypt.Text)* SizeOf(Char)*2]);

Hab also SizeOf(Char) * 2 gemacht.

Danke nochmal an alle die geantwortet haben.

Geändert von Root2k (17. Jun 2011 um 13:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#13

AW: [Erledigt] Speichern von RCx-Zeichen in Textdatei

  Alt 17. Jun 2011, 13:51
Zitat:
Delphi-Quellcode:
procedure TForm1.BtnSaveClick(Sender: TObject);
var
  FStream: TStream;
const
  OutFileName: string = 'd:\tmp.txt';
begin
  ForceDirectories(ExtractFilePath(OutFileName)) ;
  FStream := TFileStream.Create(OutFileName,fmCreate) ;
  FStream.Write(Pointer(OutputCrypt.Text)^,Length(OutputCrypt.Text)* SizeOf(Char)) ; // Chars + Chars = OK
  FreeAndNil(FStream); // nicht nötig, da die Variable eh gleich weggeworfen wird
  // kein Ressourcenschutzblog?
end;

procedure TForm1.BtnReadClick(Sender: TObject);
var
  InputFile: TFileStream;
  TmpText: String;
const
  outFileName: string = 'd:\tmp.txt';
begin
  InputFile := TFileStream.Create(outFileName, fmOpenRead);
  try
    SetLength(TmpText, InputFile.Size); // Chars + Bytes = Fehler
    InputFile.Read(TmpText[1], InputFile.Size); // Bytes + Bytes = OK
  finally
    InputFile.Free;
    // hier gibt es einen :)
  end;
  OutputDecrypt.Text := TmpText;
end;



Delphi-Quellcode:
procedure TForm1.BtnSaveClick(Sender: TObject);
var
  FStream: TStream;
  TmpText: String;
const
  OutFileName: string = 'd:\tmp.txt';
begin
  ForceDirectories(ExtractFilePath(OutFileName)) ;
  FStream := TFileStream.Create(OutFileName,fmCreate) ;
  try
    TmpText := OutputCrypt.Text;
    if TmpText <> 'then
      FStream.Write(TmpText[1], Length(TmpText) * SizeOf(Char)) ;
  finally
    FStream.Free;
  end;
end;

procedure TForm1.BtnReadClick(Sender: TObject);
var
  InputFile: TFileStream;
  TmpText: String;
const
  outFileName: string = 'd:\tmp.txt';
begin
  InputFile := TFileStream.Create(outFileName, fmOpenRead);
  try
    SetLength(TmpText, InputFile.Size div SizeOf(Char));
    if TmpText <> 'then
      InputFile.Read(TmpText[1], Length(TmpText) * SizeOf(Char));
  finally
    InputFile.Free;
  end;
  OutputDecrypt.Text := TmpText;
end;
Du solltest dich auf eine Art der Fehlerbehandlung, bzw. des Ressourcenschutzes einigen
und an der richtigen Stelle umrechnen, denn Length(OutputCrypt.Text)* SizeOf(Char)*2 war die falsche Stelle.

Wenn das Schreiben nicht dem Lesen ähnelt, dann ist da irgendwas falsch, bzw. das Konzept stimmt nicht.

PS: Besser ReadBuffer und WriteBuffer, statt Read und Write verwenden, wenn du schon dessen Rückgabewerte nicht prüfst.
$2B or not $2B

Geändert von himitsu (17. Jun 2011 um 13:54 Uhr)
  Mit Zitat antworten Zitat
Root2k

Registriert seit: 7. Jun 2011
Ort: Ulm
49 Beiträge
 
Delphi XE Enterprise
 
#14

AW: [Erledigt] Speichern von RCx-Zeichen in Textdatei

  Alt 17. Jun 2011, 14:10
Ok, vielen Dank!!
War bis jetzt alles nur für Testzwecke, aber mit dem was du sagst hast du natürlich Recht.

Werde deine Anmerkungen gleich umsetzen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 21:36 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