Einzelnen Beitrag anzeigen

FrankBrin

Registriert seit: 8. Mär 2005
Ort: Oppenweiler
105 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Mein Progi soll japanisch sprechen!

  Alt 6. Jul 2005, 16:07
Zitat:
Das Problem ist eher die Delphi-IDE (welche Delphi-Version hast Du denn?) welche kein Unicode kann.
Ich verwende D7 Pro unter WinXP Pro (D2005 liegt hier bereits neben mir !!!Angst vor Neuem!!!).

Also jetzt mal konkret:
Ich habe mir erst einmal ein kleines Testprogi erstellt, welches nix anderes tut, wie eine Unicode - TextDatei zeilenweise einzulesen. Die Texte in der Datei zeigt Notepad auch richtig als japanisch an. Also gehe ich davon aus, dass es Unicode ist.
Die Texte werden in ein Array of WideString abgelegt und so ein einzelner WStr weise ich dann einem TntLabel.Caption zu. Das Ganze sieht dann so aus:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons,
  TntForms, TntStdCtrls, TntButtons, TntSystem;

type TForm1 = class(TTntForm)
    Lbl_01: TTntLabel;
    Btn_01: TTntBitBtn;
    Edt_01: TTntEdit;
    TntButton1: TTntButton;
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure TntButton1Click(Sender: TObject);
  private { Private-Deklarationen }
    txtErrTexts : Array of WideString;
  public { Public-Deklarationen }
    MaxErrTexts : Integer;
    procedure ReadUnicode();
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ReadUniCode();
end; //========================================================================

procedure TForm1.FormActivate(Sender: TObject);
var myWStr : WideString;
begin
  myWStr := txtErrTexts[ 70];
  Lbl_01.Caption := myWStr;
end; //========================================================================

procedure TForm1.ReadUnicode();
var
  tf :   TextFile;
  strLine : WideString;
   fname : String;
  idx : Integer;
  TntWideString
begin
  //Fehlertexte
  fname := 'Txt_Errors.ger';
  if ( FileExists( fname)) then begin
    SetLength( txtErrTexts, 0);
    MaxErrTexts := 0;
    AssignFile( tf, fname);
    Reset( tf);
    while not Eof( tf) do begin
      Readln( tf, strLine);
      idx := AnsiPos( ';', strLine);
      if idx <> 1 then begin //Kommentarzeilen beginnen mit ;
        if idx > 0 then strLine := Copy( strLine, 1, idx - 1); // Alles nach ; entfernen
        //strLine := AnsiDequotedStr( strLine, '"');
        SetLength( txtErrTexts, MaxErrTexts + 1);
        txtErrTexts[ MaxErrTexts] := WideString( strLine);
        Inc( MaxErrTexts);
      end;
    end;
    CloseFile( tf);
  end;
end; //========================================================================

procedure TForm1.TntButton1Click(Sender: TObject);
begin
  Lbl_01.Caption := Edt_01.Text;
end;

end.
Bitte nicht an dem AnsiPos und Copy stören! es ist mir klar, das es nicht tut. Es wird ja auch nicht ausgeführt.

Wenn ich das Ganze debugge, dann sieht das Textfeld txtErrTexts in ReadUnicode echt gut aus. Kommt der Debugger aber in FormActivate steht im Textfeld was anderes und das TntLabel zeigt nix an.

Manchmal komm ich mir vor wie ein Anfänger!!!
Frank Brinschwitz
  Mit Zitat antworten Zitat