![]() |
AW: 1-Byte-Char in BDS2010
vielleicht willst Du die Funktion LoadFileWithEncoding verwenden ....
Delphi-Quellcode:
unit ConvertCodePage;
// 20120116 by Thomas Wassermann interface uses Classes,Sysutils; Procedure ConverCodePage(Const fn:String; FromCP, ToCP:Integer); Procedure LoadFileWithEncoding(const fn:String; CodePage:Integer;sl:TStringList); Procedure SaveFileWithEncoding(const fn:String; CodePage:Integer;sl:TStringList); implementation Procedure LoadFileWithEncoding(const fn:String; CodePage:Integer;sl:TStringList); var enc:TEncoding; begin enc := TEncoding.GetEncoding(CodePage); try sl.LoadFromFile(fn,enc); finally enc.Free; end; end; Procedure SaveFileWithEncoding(const fn:String; CodePage:Integer;sl:TStringList); var enc:TEncoding; begin enc := TEncoding.GetEncoding(CodePage); try sl.SaveToFile(fn,enc); finally enc.Free; end; end; Procedure ConverCodePage(Const fn:String; FromCP, ToCP:Integer); var sl : TStringList; begin sl := TStringList.Create; LoadFileWithEncoding(fn, FromCP , sl); SaveFileWithEncoding(fn, ToCP , sl); sl.Free; end; end |
AW: 1-Byte-Char in BDS2010
Man kann dem AnsiString auch direkt die CodePage mitgeben, wobei Delphi dann (meistens) die gewünschte CodePage nutzt, wenn es automatisch konvertieren soll.
![]() ![]() ![]() ![]() ![]() Es gibt sogar ein
Delphi-Quellcode:
, wobei ich nicht genau weiß, wie man das nutzt.
ReadLString(var t: TTextRec; var s: AnsiString; CodePage: Word);
Theoretisch sollte es eine der internen Funktionen für Read und ReadLn sein. Eventuell wird es ja automatisch genutzt, wenn man dem StringTyp die Codepage mitgibt, so wie z.B. die Codepage 65001 für den ![]()
Delphi-Quellcode:
type
UTF8String = type AnsiString(65001); OEMString = type AnsiString(850); // oder = type AnsiString(CP_OEMCP) |
AW: 1-Byte-Char in BDS2010
Bummis Vorschlag klingt gut...
Kann aber erst später weiter machen... Danke für Eure Hilfe! Grüße Manfred |
AW: 1-Byte-Char in BDS2010
@Bummi: wieso in Gottes Namen übergibst Du die Listen als Variablenparameter?
|
AW: 1-Byte-Char in BDS2010
@Deddy
war ein nicht endbereinigter Code, bei dem Ursprünglich wenn nicht assigned Stringlisten erzeugt wurden |
AW: 1-Byte-Char in BDS2010
Das macht in dem Zusammenhang aber auch keinen Sinn, was soll denn dann gespeichert werden? Naja, egal, das "var" weg (und vielleicht TStringlist durch TStrings ersetzen) und gut is ;)
|
AW: 1-Byte-Char in BDS2010
Zitat:
|
AW: 1-Byte-Char in BDS2010
Class Helper für welche Klasse?
|
AW: 1-Byte-Char in BDS2010
Zitat:
|
AW: 1-Byte-Char in BDS2010
Wenn es sonst niemand macht:
Delphi-Quellcode:
Vielleicht könnte man künftig den schlauen Worten dann aber auch selbst Taten folgen lassen.
type
TStringsCodePageHelper = class helper for TStrings public procedure ConvertFileCodePage(const Filename: string; FromCP, ToCP: Integer); procedure LoadFileWithEncoding(const Filename: String; CodePage: Integer); procedure SaveFileWithEncoding(const Filename: String; CodePage: Integer); end; procedure TStringsCodePageHelper.ConvertFileCodePage(const Filename: string; FromCP, ToCP: Integer); begin LoadFileWithEncoding(Filename, FromCP); SaveFileWithEncoding(Filename, ToCP); end; procedure TStringsCodePageHelper.LoadFileWithEncoding(const Filename: String; CodePage: Integer); var Encoding: TEncoding; begin Encoding := TEncoding.GetEncoding(CodePage); try LoadFromFile(Filename, Encoding); finally Encoding.Free; end; end; procedure TStringsCodePageHelper.SaveFileWithEncoding(const Filename: String; CodePage: Integer); var Encoding: TEncoding; begin Encoding := TEncoding.GetEncoding(CodePage); try SaveToFile(Filename, Encoding); finally Encoding.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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 by Thomas Breitkreuz