![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запись в текстовый файл [D7, WinXP]
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 - надо использовать системную память.