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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2012, 20:51   #1
Lier
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 18
По умолчанию Редактирование TMemo

Здраствуйте, проблема заключается в том, что текст в memo не редактируется.
PHP код:
Mmo1.Lines.LoadFromFile('C:\Windows\System32\drivers\etc\hosts'
Открывает файл hosts, но не редактирует его. Если зажать любую клавишу, он её печатает и быстро удаляет. Такое не только с файлом hosts, но и с любым не системным файлом. ReadOnly=false, сразу скажу. Но если делать через OpenDialog, то всё работает нормально-редактируется и сохраняется. В чем может быть проблема?Не хочу использовать OpenDialog потому что прога будет работать только с файлом hosts. Пишу прогу для себя и для практики.
Lier вне форума Ответить с цитированием
Старый 22.04.2012, 10:18   #2
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

весь код пожалуйста
Кольша вне форума Ответить с цитированием
Старый 22.04.2012, 10:31   #3
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Все работает с вашими настройками, я только добавил TCombobox для перебора по буквам... ну не у всех винда на C. Пример не могу прикрепить во вложении по этому код просто выложу
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Memo1.Lines.LoadFromFile(ComboBox1.Text +
                          ':\Windows\System32\drivers\etc\hosts');
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  si : Char;
begin
  for si := 'a' to 'z' do
   begin
     ComboBox1.Items.Add(si);
   end;
  ComboBox1.ItemIndex := 0;
end;

end.
kta87 вне форума Ответить с цитированием
Старый 22.04.2012, 10:38   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
но и с любым не системным файлом. ReadOnly=false, сразу скажу.
Ну так попробуй снять этот флажок с файла используя SetFileAttributes
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.04.2012, 11:42   #5
Lier
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 18
По умолчанию

Код:
unit HostEditor;

interface

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

type
  TForm1 = class(TForm)
    mmo1: TMemo;
    tmr1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure tmr1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Tmr1.Enabled := true; // Включаем таймер
Tmr1.Interval := 100;  //Ставим время равное 1-ой секунде
end;

procedure TForm1.tmr1Timer(Sender: TObject);
begin
Mmo1.Lines.LoadFromFile('путь к любому текстовому файлу');
end;

end.
Lier вне форума Ответить с цитированием
Старый 22.04.2012, 11:46   #6
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

Timer нафига вы поставили вот нафига вот вся беда!
Код:

procedure TForm1.FormCreate(Sender: TObject);
begin
Mmo1.Lines.LoadFromFile('путь к любому текстовому файлу');
end;
Цитата:
Tmr1.Interval := 100; //Ставим время равное 1-ой секунде
да одна секунда стала короче в 10 раз а я и не заметил =DDD
Кольша вне форума Ответить с цитированием
Старый 22.04.2012, 11:46   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Бяку случаем не пишите?
hosts файл рагребать надо.

Я бы регулярным выражением пробежался и все.


P.S. Любой нормальный АВ вас **** пошлет за попытку доступа к этому файлу.
Человек_Борща вне форума Ответить с цитированием
Старый 22.04.2012, 12:05   #8
Lier
Пользователь
 
Регистрация: 21.04.2012
Сообщений: 18
По умолчанию

Кольша таймер сделал, чтобы навесить на какое-нибудь событие. Если делать без этого, то содержимое hosts не подгружается в Memo пока не нажмешь какую-нибудь клавишу в окне memo. Так как прога работает с одним только файлом, хотелось бы, что hosts загружался без участия пользователя. Если навесить LoadFromFile на кнопку всё равно та же беда. Текст не редактируется. Содержимое спокойно редактируется\сохраняется если делать через OpenDialog.
Цитата:
Tmr1.Interval := 100; //Ставим время равное 1-ой секунде
Коммент старый, уменьшил на один нолик позже)
Человек_Борща прогу пишу для себя, написал же. Рагребать что это?))Я недавно с паскаля пересел опыта мало, штудирую всё что попадет под руку, но мало помогает. Насчет регулярного выражения тоже не очень понятно(.

Кстати тестирую не на файле hosts, а на обычных текстовых файлах без атрибута только чтение.
Lier вне форума Ответить с цитированием
Старый 22.04.2012, 12:11   #9
Кольша
Далеко не
Участник клуба
 
Аватар для Кольша
 
Регистрация: 11.08.2011
Сообщений: 1,512
По умолчанию

твою дивизию делайте так:в начале программмы( как я показал) загружайте код и добавте вот это действие и будет вам счастье .
Код:

procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
Mmo1.Lines.saveFromFile('путь к любому текстовому файлу');

end;
Кольша вне форума Ответить с цитированием
Старый 22.04.2012, 12:12   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС, есть событие OnCreate.
оно выполняется при создании формы, вот и грузите в нем.

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


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TMemo George2010 Компоненты Delphi 1 01.09.2010 17:16
TMemo Valera Помощь студентам 14 04.08.2008 10:56
TMemo terminadoor Помощь студентам 10 23.07.2008 19:41
Tmemo BlackOmen Общие вопросы Delphi 2 16.03.2008 21:03