Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запись в текстовый файл [D7, WinXP]


Страницы:   1 2 3 4 5

Tanya ©   (2006-07-26 21:33:00) 

Что-то я никак не пойму почему не работает запись в файл... Делаю я так:

var
F: TextFile;

при запуске программы:

 AssignFile(F, 'file.dat');
 if FileExists('file.dat') then
   Append(F)
 else
   Rewrite(F);


при закрытии программы:

 CloseFile(F);


во время работы программы в определенные моменты файл постоянно дополняется новой строкой(ами):

WriteLn(F, 'test');


Файл создается если его нету, но вот почему в него не записывается ничего я не пойму...((( В блокноте открываю его, а там пусто...((( Мастера, подскажите пожалуйста..


tesseract   (2006-07-27 16:50:00) [21]


> Tanya   (27.07.06 16:44) [71]


Это можно перехватить и из сторонней программы, по получению сообщения - GetForeGroundWindow :-)


Tanya   (2006-07-27 16:44:00) [22]

Не всегда по буковке хотелось бы передавать... еще в будущем хочу сделать путь к exe-файлу программы, в котором вводится все это и заголовок окна(передаваться все это тоже будет)


tesseract   (2006-07-27 16:40:00) [23]

см 68. возможно тебе хватит и 64 бит :-)


Tanya   (2006-07-27 16:38:00) [24]

tesseract, ведь для посылки WM_COPYDATA нужно знать хендл приложения, который "прокисает" хранясь в глобальной переменной(передается тогда в функции RunHook)... Вот что делать? Посылать тогда всем приложениям сообщение, т.е. HWND_BROADCAST?


tesseract   (2006-07-27 16:27:00) [25]

гм не обязательно CopyDataStruct - она стандартизирована для WM_COPYDATA.

Можешь в принципе передать любые данные по ссылке через wparam/lparam.

например ссылку на строку или PChar.

Если хочешь передать только одну или две буквы - так вообще ничего не надо делать - передай их как код через wparam/lparam и никаких тормозных sharemem.


Tanya   (2006-07-27 16:17:00) [26]

Мастера, подскажите пожалуйста, уже второй день не могу это сделать..(((


Tanya   (2006-07-27 15:45:00) [27]

ошибка на "собаке" (@) в строке SendMessage(HWND_BROADCAST, WM_HUSBAND_INTERCEPT, 0, LPARAM(@CDS));

[Error] MyLib.dpr(32): Missing operator or semicolon


Tanya   (2006-07-27 15:41:00) [28]

М... а что уместно? )))


Чапаев   (2006-07-27 14:33:00) [29]


> SendMessage(HWND_BROADCAST, WM_HUSBAND_INTERCEPT, 0, LPARAM(@CDS));

Примерно так, но COPYDATASTRUCT в данном случае неуместно.


Tanya   (2006-07-27 14:19:00) [30]

Я правильно поняла?

const
 WM_HUSBAND_INTERCEPT=WM_USER+117;
...

SendMessage(HWND_BROADCAST, WM_HUSBAND_INTERCEPT, 0, LPARAM(@CDS));


Чапаев   (2006-07-27 14:16:00) [31]


> А передавать COPYDATASTRUC в каком сообщении, в WM_COPYDATA
> или в WM_HUSBAND_INTERCEPT?

Нет. Передача COPYDATASTRUCT -- не панацея.


> И хендл программы HWND_BROADCAST или всетаки передавать
> его в функции RunHook?

Э... Ты таки запуталась.


Tanya   (2006-07-27 14:11:00) [32]

А передавать COPYDATASTRUC в каком сообщении, в WM_COPYDATA или в WM_HUSBAND_INTERCEPT? А то я что-то запуталась уже.. И хендл программы HWND_BROADCAST или всетаки передавать его в функции RunHook?


Чапаев   (2006-07-27 14:04:00) [33]

var
 CDS:TCopyDataStruct;
 Txt:PChar;
...
begin
...
 CDS.cbData:=StrLen(Txt); //или StrLen(Txt)+1?
 CDS.lpData:=Txt;
 SendMessage(xxx,xxx,xxx,LPARAM(@CDS));
end;


Tanya   (2006-07-27 13:59:00) [34]

А как передавать этот COPYDATASTRUC? впервый раз вообще слышу...


Чапаев   (2006-07-27 13:57:00) [35]


> Tanya   (27.07.06 13:50) [54]

Конечно неправильно. В LParam нужно передавать указатель на COPYDATASTRUC, а ты передаёшь просто PChar.


> ShareMem еще какой-то

Впиши ShareMem первым в список uses приложения и библиотеки.


Tanya   (2006-07-27 13:53:00) [36]

*запутали )))


Tanya   (2006-07-27 13:52:00) [37]

ShareMem еще какой-то... Вообще темный лес... Ну и запути же вы меня...)))


Чапаев   (2006-07-27 13:51:00) [38]


> tesseract ©   (27.07.06 13:49) [53]

Шъйорт побьеры. Туплю.


> Чапаев, это из за того что RegisterWindow[s]Message() не
> используем?

Нет, это не коррелируется. :-)


Tanya   (2006-07-27 13:50:00) [39]

Чапаев, посмотри пожалуйста, я писала выше код с использованием WM_COPYDATA, может я не правильно что-то там сделала? Но тоже не работало...(((


tesseract   (2006-07-27 13:49:00) [40]


> Чапаев ©   (27.07.06 13:48) [51]


ShareMem - надо использовать системную память.


Страницы:   1 2 3 4 5

Наверх

Титульная страница Поиск, карта сайта Написать письмо