Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2009, 22:07   #1
andreibtzt
Заблокирован
 
Регистрация: 04.04.2009
Сообщений: 43
По умолчанию Фаил Utf8 в ASCII

Всем привет! есть такая проблема, у меня есть кадировании фаил, техт в формате Utf8 и я откриваю с Memo или с RichEdit, но он не может отрывать, мне отркривает только первые 2 баиты, и выводит в Мемо, я хочу отркрить как Нотепад, Помогите пожалуста!
andreibtzt вне форума Ответить с цитированием
Старый 21.09.2009, 22:11   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может в ANSI?

Код:
 Memo1.Lines.LoadFromFile('C:/1.txt');
 Memo1.Lines.Text:=UTF8ToANSI(Memo1.Lines.Text);
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2009, 22:17   #3
andreibtzt
Заблокирован
 
Регистрация: 04.04.2009
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
может в ANSI?

Код:
 Memo1.Lines.LoadFromFile('C:/1.txt');
 Memo1.Lines.Text:=UTF8ToANSI(Memo1.Lines.Text);
да в ANSI, но так и я пробувал, но не работает.
andreibtzt вне форума Ответить с цитированием
Старый 21.09.2009, 22:18   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

может там не UTF8 тогда?
у меня все отлично работает.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2009, 22:32   #5
andreibtzt
Заблокирован
 
Регистрация: 04.04.2009
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
может там не UTF8 тогда?
у меня все отлично работает.

блин, перепутал, фаил Unicode, извините, но как так зделать?
andreibtzt вне форума Ответить с цитированием
Старый 21.09.2009, 22:40   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

UNF16 значит...щас накропаю..посмотрим, в этот пост и напишу код

неа, чет не вышло
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 21.09.2009 в 22:54.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2009, 23:13   #7
andreibtzt
Заблокирован
 
Регистрация: 04.04.2009
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
UNF16 значит...щас накропаю..посмотрим, в этот пост и напишу код

неа, чет не вышло
(((
andreibtzt вне форума Ответить с цитированием
Старый 21.09.2009, 23:51   #8
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

В BDS 2005 есть функция: UnicodeToUtf8()
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 22.09.2009, 16:14   #9
andreibtzt
Заблокирован
 
Регистрация: 04.04.2009
Сообщений: 43
По умолчанию

я нашол, и выилажу потомушто камуто будет нужно!

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TMemoWithUnicod = class(TCustomMemo)
  private
    FMemStream: TMemoryStream;
  public
    procedure LoadFromUnicodFile(const FileName: string);
    procedure SaveToUnicodFile(const FileName: string);

    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var
  MemoWithUnicod:TMemoWithUnicod;

constructor TMemoWithUnicod.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FMemStream := TMemoryStream.Create;
end;

destructor TMemoWithUnicod.Destroy;
begin
  FMemStream.Free;
  inherited Destroy;
end;

procedure TMemoWithUnicod.LoadFromUnicodFile(const FileName: string);
var
  wbuf: PChar;
  zag: Word;
begin
  FMemStream.LoadFromFile(FileName);
  If FMemStream.Size < 2 then
  exit;
  FMemStream.Position := 0;
  FMemStream.Read(zag, 2);
  If zag <> $FEFF then
  exit;

  FMemStream.Position := 2;
  wbuf := StrAlloc(FMemStream.Size);
  try
    ZeroMemory(wbuf, FMemStream.Size);
    FMemStream.Read(wbuf^, FMemStream.Size-2);
    Lines.Text := WideCharToString(PWideChar(wbuf));
  finally
    StrDispose(wbuf);
  end;
end;

procedure TMemoWithUnicod.SaveToUnicodFile(const FileName: string);
var
  dest: PWideChar;
  zag: Word;
begin
  FMemStream.Clear;
  FMemStream.Position := 0;
  zag := $FEFF;
  FMemStream.Write(zag, 2);

  FMemStream.Position := 2;
  GetMem(dest, (Length(Lines.Text)+1)*2);
  try
    ZeroMemory(dest, (Length(Lines.Text)+1)*2);
    StringToWideChar(Lines.Text, dest, Length(Lines.Text)+1);
    FMemStream.Write(dest^, Length(Lines.Text)*2);
    FMemStream.SaveToFile(FileName);
  finally
    FreeMem(dest);
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 MemoWithUnicod := TMemoWithUnicod.Create(Self);
 MemoWithUnicod.Parent := Self;
 MemoWithUnicod.Left := 20;
 MemoWithUnicod.Top := 20;
 MemoWithUnicod.ScrollBars := ssVertical;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 MemoWithUnicod.LoadFromUnicodFile('MyUnicodFile.txt');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 MemoWithUnicod.SaveToUnicodFile('MyUnicodFile.txt');
end;

end.
andreibtzt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ASCII Dimarik Общие вопросы C/C++ 27 28.08.2009 14:50
paskal ascii netcher Помощь студентам 1 03.03.2009 12:45
спецсимволы utf8 sergsam1 HTML и CSS 25 29.01.2009 16:21
ASCII в ANSI JRcoker Общие вопросы Delphi 5 03.08.2008 15:49
Перекодировка из ASCII Dimo444ka Помощь студентам 2 25.05.2008 13:22