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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2010, 10:44   #1
TheBlack
Новичок
Джуниор
 
Регистрация: 21.09.2010
Сообщений: 1
По умолчанию кодировка в дельфе

как сделать, чтобы дельфи открывал файл, менял кодировку на свою, выполнял код и потом менял обратно?
сам код:

Код:
interface

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

type

  TPerson = record
    Surname: string[24];
    данные1: string[14];
    данные2: string[10];
    данные3: string[21];
    size: string[13];
    skotor: string[10];
    pokotor: String[10];
    zakotor: string[10];
    primech: string[10];

  end;

  TArrPerson = array [0..0] of TPerson;
  PPersons = ^TArrPerson;



  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    StatusBar1: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ReplaceChar(Value: string; cfrom,cto:char): string;
var tmp:string;

begin
  tmp:=Value;
  while pos(cfrom,tmp)>0 do
    tmp[pos(cfrom,tmp)]:=cto;
  result:=tmp;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog.Execute then
  Edit1.Text:=OpenDialog.FileName;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if OpenDialog.Execute then
  Edit2.Text:=OpenDialog.FileName;

  end;


procedure TForm1.Button3Click(Sender: TObject);
begin
if SaveDialog.Execute then
  Edit3.Text:=SaveDialog.FileName;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  Persons: PPersons;

  i, j, count, MyF : integer;
    search:boolean;
    f,fout: textfile;

  tmp: string;
  tmp2: Pansichar;



 //Persons: Fpersons;
  tmp1: string[14];
  Formats, fs: TFormatSettings;
begin
  Formats.LongDateFormat:='DD/MM/YYYY';
  Formats.ShortDateFormat:='DD/MM/YYYY';
  tmp2:='�¥â ¤***ëå';
//  AnsiToOem(tmp2,tmp2);
//  CharToOem(tmp2,tmp2);
  count:=0;
  AssignFile(f,Edit1.Text);
  ReSet(f);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
  Readln(f,tmp);
//  Readln(f,tmp);
//  Readln(f,tmp);

  while copy(tmp,3,5) <>'-----' do
    begin
      ReAllocMem(Persons, SizeOf(TPerson)*(count+1));
      //ShowMessage(tmp);
      Persons^[count].SNILS:=trim(copy(tmp,10,14));
     // ShowMessage(tmp);
      Persons^[count].Surname:=trim(copy(tmp,25,23));
      Persons^[count].данные1:=trim(copy(tmp,50,10));
      Persons^[count].данные2:=trim(copy(tmp,61,22));
      Persons^[count].данные3:=trim(copy(tmp,84,13));
      if length(trim(copy(tmp,98,10)))>0 then
      Persons^[count].skotor:=trim(copy(tmp,98,10))
      else Persons^[count].skotor:=' ';
      if length(trim(copy(tmp,109,10)))>0 then
      Persons^[count].pokotor:=trim(copy(tmp,109,10))
      else Persons^[count].pokotor:=' ';
      if length(trim(copy(tmp,120,10)))>0 then
      Persons^[count].zakotor:=trim(copy(tmp,120,10))
      else Persons^[count].zakotor:=' ';
      Persons^[count].primech:=trim(copy(tmp,131,10));
      inc(count);
      Readln(f,tmp);

    end;
//  ShowMessage(IntToStr(count));
  ReAllocMem(Persons, SizeOf(TPerson)*(count+0));
  CloseFile(f);
  AssignFile(f,Edit2.Text);
//  tmp1:=tmp;
//  While length(tmp1)<30 do
  ReSet(f);
  AssignFile(fout,Edit3.Text);
  ReWrite(fout);
  readln(f,tmp);
  writeln(fout,tmp);
  i:=0;
  while not eof(f) do
    begin
      Search:=False;
      MyF:=0;
        for j:=1 to 7 do
          begin
            Readln(F,tmp);
            Writeln(Fout,tmp);
          end;
      readln(f,tmp);
      tmp1:=copy(tmp,10,14);
      //ShowMessage(tmp1);
      writeln(fout,tmp);
      for j:=1 to 12 do
        begin
          readln(f,tmp);
          writeln(fout,tmp);
        end;
        //Writeln(fout,tmp);
        for j:=0 to count-1 do
          begin
            if pos(Persons^[j].SNILS,tmp1)>0 then
              begin
                Search:=true;
                MyF:=j;
              end;
          end;
      if not Search then
        writeln(fout,tmp2)
      else
        begin
          tmp:=Persons^[MyF].данные1+' '+Persons^[MyF].Surname+' '+Persons^[MyF].данные2+Persons^[MyF].данные3+' '+Persons^[MyF].size+' '+Persons^[MyF].skotor+' '+Persons^[MyF].pokotor+' '+Persons^[MyF].zakotor+' '+Persons^[MyF].primech;
          writeln(fout,tmp);
        end;
          readln(f,tmp);
          readln(f,tmp);
          writeln(fout,tmp);
      inc(i);
      StatusBar1.Panels[0].Text:='Îáðàáîòàíî: '+inttostr(i);
      Application.ProcessMessages;
    end;
    ShowMessage('Ãîòîâî');
  end;
end.

Последний раз редактировалось Stilet; 21.09.2010 в 11:33.
TheBlack вне форума Ответить с цитированием
Старый 21.09.2010, 11:34   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сам то понял что спросил?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.09.2010, 11:59   #3
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Оно?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В Дельфе есть возможность - рисуемые обьекты были хоть немного прозрачны? Cabal777 Помощь студентам 7 09.02.2010 20:26
Тест на дельфе sPan4eZ Помощь студентам 4 20.12.2009 16:04
Помогите с 2мя прогами на дельфе Qlimax Фриланс 10 13.07.2009 13:13
нужна прога для вычислений функций методом Фибоначчи. на паскале или дельфе. ildarik Помощь студентам 1 18.06.2007 00:10