AGB  ·  Datenschutz  ·  Impressum  







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

1-Byte-Char in BDS2010

Ein Thema von LeisureSuitLarry · begonnen am 29. Feb 2012 · letzter Beitrag vom 29. Feb 2012
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#11

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 10:06
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
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi (29. Feb 2012 um 11:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 10:12
Man kann dem AnsiString auch direkt die CodePage mitgeben, wobei Delphi dann (meistens) die gewünschte CodePage nutzt, wenn es automatisch konvertieren soll.

Delphi-Referenz durchsuchenSetAnsiString

Delphi-Referenz durchsuchenStringElementSize
Delphi-Referenz durchsuchenStringCodePage
Delphi-Referenz durchsuchenStringRefCount
Delphi-Referenz durchsuchenSetCodePage

Es gibt sogar ein ReadLString(var t: TTextRec; var s: AnsiString; CodePage: Word); , wobei ich nicht genau weiß, wie man das nutzt.
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-Referenz durchsuchenUTF8String.
Delphi-Quellcode:
type
  UTF8String = type AnsiString(65001);
  OEMString = type AnsiString(850); // oder = type AnsiString(CP_OEMCP)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (29. Feb 2012 um 10:20 Uhr)
  Mit Zitat antworten Zitat
LeisureSuitLarry

Registriert seit: 8. Dez 2005
Ort: Unterschleißheim
90 Beiträge
 
Delphi 2010 Professional
 
#13

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 10:29
Bummis Vorschlag klingt gut...
Kann aber erst später weiter machen...

Danke für Eure Hilfe!

Grüße
Manfred
Manfred
Mein erster Rechner hatte eine Z80A-CPU mit 4MHz, 64KB Speicher, Musikkassetten als Speichermedium. Als Betriebssystem CP/M (dazu gekauft)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#14

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 10:38
@Bummi: wieso in Gottes Namen übergibst Du die Listen als Variablenparameter?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 10:53
@Deddy
war ein nicht endbereinigter Code, bei dem Ursprünglich wenn nicht assigned Stringlisten erzeugt wurden
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#16

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 11:01
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#17

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 11:25
...und gut is
Nen Class Helper draus machen und 'besser' is?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#18

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 11:26
Class Helper für welche Klasse?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
vagtler

Registriert seit: 9. Jul 2010
Ort: Köln
667 Beiträge
 
Delphi 2010 Professional
 
#19

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 12:04
Class Helper für welche Klasse?
Lass mal raten: TStrings?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#20

AW: 1-Byte-Char in BDS2010

  Alt 29. Feb 2012, 14:00
Wenn es sonst niemand macht:
Delphi-Quellcode:
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;
Vielleicht könnte man künftig den schlauen Worten dann aber auch selbst Taten folgen lassen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 09: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