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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2010, 17:07   #1
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию Нетипизированные файлы

Вот таким способом записываю нетипизированный файл:
Код:
For I:=0 To 13 Do
      Begin
            If Controls[i] is TEdit Then
            Begin
                  If Length(TEdit(Controls[i]).Text) <>0 Then
                  Begin
                  For J:=1 To Length(TEdit(Controls[i]).Text) Do
                  Begin
                        Buf:=Copy(Edit1.Text,I,1);
                        Case Edit1.Text[J] Of
                        'à': Buf:='1';'á': Buf:='2'; {почему при копировании из
Delphi русские буквы не показываются?????}
                        'â': Buf:='3';'ã': Buf:='4';
                        'ä': Buf:='5';'å': Buf:='6';
                        'æ': Buf:='7';'ç': Buf:='8';
                        'è': Buf:='9';'é': Buf:='10';
                        'ê': Buf:='11';'ë': Buf:='12';
                        'ì': Buf:='13';'í': Buf:='14';
                        'î': Buf:='15';'ï': Buf:='16';
                        'ð': Buf:='17';'ñ': Buf:='18';
                        'ò': Buf:='19';'ó': Buf:='20';
                        'ô': Buf:='21';'õ': Buf:='22';
                        'ö': Buf:='23';'÷': Buf:='24';
                        'ø': Buf:='25';'ù': Buf:='26';
                        'ú': Buf:='27';'û': Buf:='28';
                        'ü': Buf:='29';'ý': Buf:='30';
                        'þ': Buf:='31';'ÿ': Buf:='32';
                        ' ': Buf:='33';
                        End;
                        B:=StrToInt(Buf);
                        BlockWrite(F,B,1);
                  End;
                  End;
            End;
      End;
Т.е. в файл записывается содержимое всех эдитов. Однако, при выводе выводится содержимое только последнего эдита:
Код:
AssignFile(F,'c:\info.rdn');
      Reset(F,1);
      Buf:='';
      While Not Eof(F) Do
      Begin
            BlockRead(F,B,1);
            Case B of
            1: Buf:=Buf+'à';2: Buf:=Buf+'á';
            3: Buf:=Buf+'â';4: Buf:=Buf+'ã';
            5: Buf:=Buf+'ä';6: Buf:=Buf+'å';
            7: Buf:=Buf+'æ';8: Buf:=Buf+'ç';
            9: Buf:=Buf+'è';10: Buf:=Buf+'é';
            11: Buf:=Buf+'ê';12: Buf:=Buf+'ë';
            13: Buf:=Buf+'ì';14: Buf:=Buf+'í';
            15: Buf:=Buf+'î';16: Buf:=Buf+'ï';
            17: Buf:=Buf+'ð';18: Buf:=Buf+'ñ';
            19: Buf:=Buf+'ò';20: Buf:=Buf+'ó';
            21: Buf:=Buf+'ô';22: Buf:=Buf+'õ';
            23: Buf:=Buf+'ö';24: Buf:=Buf+'÷';
            25: Buf:=Buf+'ø';26: Buf:=Buf+'ø';
            27: Buf:=Buf+'ú';28: Buf:=Buf+'û';
            29: Buf:=Buf+'ü';30: Buf:=Buf+'ý';
            31: Buf:=Buf+'þ';32: Buf:=Buf+'ÿ';
            33: Buf:=Buf+' ';
            End;
      End;
      ShowMessage(Buf);
      CloseFile(F);
Как быть?

В общем то, задам главный вопрос: как можно записывать в нетипизированный файл отдельные слова и потом поотдельности из спокойно вычитывать из файла?

Последний раз редактировалось _-Re@l-_; 03.10.2010 в 17:14.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.10.2010, 18:10   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Перед копированием надо было переключиться на русский язык.

Цитата:
For I:=0 To 13 Do
Откуда это число?
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 03.10.2010 в 18:13.
russian-stalker вне форума Ответить с цитированием
Старый 03.10.2010, 18:30   #3
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

ну просто у меня на форме 14 компонентов, вот и перебираю все.И всё-таки:
Цитата:
Как быть?

В общем то, задам главный вопрос: как можно записывать в нетипизированный файл отдельные слова и потом поотдельности из спокойно вычитывать из файла?
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.10.2010, 18:44   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Как-то так:
Код:
For I:=0 To ControlCount - 1 Do
      Begin
            If Controls[i] is TEdit Then
            Begin
                  If Length(TEdit(Controls[i]).Text) <>0 Then
                  Begin
                  For J:=1 To Length(TEdit(Controls[i]).Text) Do
                  Begin
                        Buf:=Copy(Edit1.Text,I,1);
                        Case Edit1.Text[J] Of
                        'à': Buf:='1';'á': Buf:='2'; {почему при копировании из
Delphi русские буквы не показываются?????}
                        'â': Buf:='3';'ã': Buf:='4';
                        'ä': Buf:='5';'å': Buf:='6';
                        'æ': Buf:='7';'ç': Buf:='8';
                        'è': Buf:='9';'é': Buf:='10';
                        'ê': Buf:='11';'ë': Buf:='12';
                        'ì': Buf:='13';'í': Buf:='14';
                        'î': Buf:='15';'ï': Buf:='16';
                        'ð': Buf:='17';'ñ': Buf:='18';
                        'ò': Buf:='19';'ó': Buf:='20';
                        'ô': Buf:='21';'õ': Buf:='22';
                        'ö': Buf:='23';'÷': Buf:='24';
                        'ø': Buf:='25';'ù': Buf:='26';
                        'ú': Buf:='27';'û': Buf:='28';
                        'ü': Buf:='29';'ý': Buf:='30';
                        'þ': Buf:='31';'ÿ': Buf:='32';
                        ' ': Buf:='33';
                        End;
                        B:=StrToInt(Buf);
                        BlockWrite(F,B,1);
                  End;
                  BlockWrite(F,34,1);//Записываем разделитель.
                  End;
            End;
      End;
Код:
var
   s: array[0..0] of string;
   c: integer;
...
AssignFile(F,'c:\info.rdn');
      Reset(F,1);
      Buf:='';
      c := 0;
      While Not Eof(F) Do
      Begin
            BlockRead(F,B,1);
            Case B of
            1: Buf:=Buf+'à';2: Buf:=Buf+'á';
            3: Buf:=Buf+'â';4: Buf:=Buf+'ã';
            5: Buf:=Buf+'ä';6: Buf:=Buf+'å';
            7: Buf:=Buf+'æ';8: Buf:=Buf+'ç';
            9: Buf:=Buf+'è';10: Buf:=Buf+'é';
            11: Buf:=Buf+'ê';12: Buf:=Buf+'ë';
            13: Buf:=Buf+'ì';14: Buf:=Buf+'í';
            15: Buf:=Buf+'î';16: Buf:=Buf+'ï';
            17: Buf:=Buf+'ð';18: Buf:=Buf+'ñ';
            19: Buf:=Buf+'ò';20: Buf:=Buf+'ó';
            21: Buf:=Buf+'ô';22: Buf:=Buf+'õ';
            23: Buf:=Buf+'ö';24: Buf:=Buf+'÷';
            25: Buf:=Buf+'ø';26: Buf:=Buf+'ø';
            27: Buf:=Buf+'ú';28: Buf:=Buf+'û';
            29: Buf:=Buf+'ü';30: Buf:=Buf+'ý';
            31: Buf:=Buf+'þ';32: Buf:=Buf+'ÿ';
            33: Buf:=Buf+' ';
            34: begin s[c] := Buf; inc(c); Buf:=''; setlength(s,c); end;
            End;
      End;
      ShowMessage(Buf);
      CloseFile(F);
Не?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 03.10.2010, 19:02   #5
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
Код:
  34: begin s[c] := Buf; inc(c); Buf:=''; setlength(s,c); end;
В слове SetLength(S,C) выдаёт ошибку Incompatible types

Вот, подправил все ошибки, делаю так:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var B:Byte;Buf:String;
    s:array of string;
    c:integer;
begin
      SetLength(S,6);
      AssignFile(F,'c:\info.rdn');
      Reset(F,3);
      Buf:='';
      c:=0;
      While Not Eof(F) Do
      Begin
            BlockRead(F,B,1);
            Case B of
            1: Buf:=Buf+'à';2: Buf:=Buf+'á';
            3: Buf:=Buf+'â';4: Buf:=Buf+'ã';
            5: Buf:=Buf+'ä';6: Buf:=Buf+'å';
            7: Buf:=Buf+'æ';8: Buf:=Buf+'ç';
            9: Buf:=Buf+'è';10: Buf:=Buf+'é';
            11: Buf:=Buf+'ê';12: Buf:=Buf+'ë';
            13: Buf:=Buf+'ì';14: Buf:=Buf+'í';
            15: Buf:=Buf+'î';16: Buf:=Buf+'ï';
            17: Buf:=Buf+'ð';18: Buf:=Buf+'ñ';
            19: Buf:=Buf+'ò';20: Buf:=Buf+'ó';
            21: Buf:=Buf+'ô';22: Buf:=Buf+'õ';
            23: Buf:=Buf+'ö';24: Buf:=Buf+'÷';
            25: Buf:=Buf+'ø';26: Buf:=Buf+'ù';
            27: Buf:=Buf+'ú';28: Buf:=Buf+'û';
            29: Buf:=Buf+'ü';30: Buf:=Buf+'ý';
            31: Buf:=Buf+'þ';32: Buf:=Buf+'ÿ';
            33: Buf:=Buf+' ';
            34: begin s[c]:=Buf;inc(c);Buf:='';end;
            End;
      End;
      ShowMessage(Buf);
      CloseFile(F);
end;

procedure TForm1.Button1Click(Sender: TObject);
var I,J:Integer;Buf:String;B:Byte;
    R:Byte;
begin
       R:=34;
      AssignFile(F,'c:\info.rdn');
      Rewrite(F,2);
      For I:=0 To ControlCount - 1 Do
      Begin
            If Controls[i] is TEdit Then
            Begin
                  If Length(TEdit(Controls[i]).Text) <>0 Then
                  Begin
                        For J:=1 To Length(TEdit(Controls[i]).Text) Do
                        Begin
                        Buf:=Copy(Edit1.Text,I,1);
                        Case Edit1.Text[J] Of
                        'à': Buf:='1';'á': Buf:='2';
                        'â': Buf:='3';'ã': Buf:='4';
                        'ä': Buf:='5';'å': Buf:='6';
                        'æ': Buf:='7';'ç': Buf:='8';
                        'è': Buf:='9';'é': Buf:='10';
                        'ê': Buf:='11';'ë': Buf:='12';
                        'ì': Buf:='13';'í': Buf:='14';
                        'î': Buf:='15';'ï': Buf:='16';
                        'ð': Buf:='17';'ñ': Buf:='18';
                        'ò': Buf:='19';'ó': Buf:='20';
                        'ô': Buf:='21';'õ': Buf:='22';
                        'ö': Buf:='23';'÷': Buf:='24';
                        'ø': Buf:='25';'ù': Buf:='26';
                        'ú': Buf:='27';'û': Buf:='28';
                        'ü': Buf:='29';'ý': Buf:='30';
                        'þ': Buf:='31';'ÿ': Buf:='32';
                        ' ': Buf:='33';
                        End;
                        B:=StrToInt(Buf);
                        BlockWrite(F,B,1);
                  End;
                  BlockWrite(F,R,1);//Çàïèñûâàåì ðàçäåëèòåëü.
                  End;
            End;
      End;
      CloseFile(F);
      ShowMessage('Inserted!');
      Edit1.Text:='';
      Edit2.Text:='';
      Edit3.Text:='';
      Edit4.Text:='';
      Edit5.Text:='';
      Edit6.Text:='';
end;
Однако, ввод выполняется вполне нормально, но вот вывод выполняет мало того что неправильно, так и после закрытия приложения Delphi мне выплёвывает вот такое красивущее окно:

Последний раз редактировалось _-Re@l-_; 03.10.2010 в 19:09.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.10.2010, 19:09   #6
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
По умолчанию

А почему нельзя создать файл типа Text или использовать переменную типа TStringList?
VladimirVB вне форума Ответить с цитированием
Старый 03.10.2010, 19:10   #7
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

VladimirVB, ещё раз прочтите название темы.
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.10.2010, 19:13   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
VladimirVB, ещё раз прочтите название темы.
Я почитал.
Цитата:
как можно записывать в нетипизированный файл отдельные слова и потом поотдельности из спокойно вычитывать из файла?
Фраза "отдельные слова" подразумевает наличие читабельного текста, а значит городить нетипированные файлы все равно что на скейте Россию пересекать.
Если речь действительно идет о человеческих словах то попрошу ответить таки на вопрос Владимира.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.10.2010, 19:20   #9
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

1.Ну ладно, отвечу: просто я не хочу, чтобы файл с данными можно было просто так прочитать,допустим,через Блокнот.
2.А если будет File Of String,будет проще?
_-Re@l-_ вне форума Ответить с цитированием
Старый 03.10.2010, 20:14   #10
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Для этих целей можно закодировать текст.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
begin
   memo2.Clear;
   {Кодируем текст из Memo1 и записываем его в Memo2}
   for I := 1 to length(Memo1.Text) do
       Memo2.Text := Memo2.Text + char(ord(Memo1.Lines.Text[i]) xor 1234);
   memo1.Clear;
   {Декодируем текст из Memo2 и записываем его в Memo1}
   for I := 1 to length(Memo2.Text) do
       Memo1.Text := Memo1.Text + char(ord(Memo2.Lines.Text[i]) xor 1234);
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нетипизированные файлы ZotaC Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 31.01.2010 19:34
НЕТИПИЗИРОВАННЫЕ Файлы Doholyan Паскаль, Turbo Pascal, PascalABC.NET 6 01.08.2009 23:26
типизированные и нетипизированные файлы andrey4623 Общие вопросы Delphi 1 28.12.2007 19:09
ПОМОГИТЕ!! Типизированные и нетипизированные файлы. Zebo Помощь студентам 1 08.06.2007 09:35