Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.11.2007, 03:00
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию не удается писать в файл больше 1 строки

сделал прогу

function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; // Îáÿçàòåëüíî stdcall !!!
Var
i:integer;
Ini: Tinifile; //
Nm:Array[0..255] of Char; //
Cs: Array[0..255] of Char; //

Ch:Char; //
Begin
Ini:=TiniFile.Create(extractfilepath(paramstr(0))+ 'MyIni.ini');

GetWindowText(Wd,Nm,255); //
GetClassName(Wd,Cs,255); //

ini.WriteString(inttostr(i+1), 'programm',' '+String(Nm)+'/'+DateToStr(Date)+'/'+TimeToStr(Time));

//
If (GetWindowTextLengthW(Wd) > 0) and (IsWindow(Wd) or IsIconic(Wd)) then form1.ListBox1.Items.Add(' '+String(Nm)+'/'+DateToStr(Date)+'/'+TimeToStr(Time));
EnumProc := TRUE;

Ini.Free;
end;

записываетсья последняя строка и все
Ответить с цитированием
  #2  
Старый 05.11.2007, 08:31
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Ну добавь второй ini.WriteString. И не перегружай так сильно строки.
__________________
Программирование - это искусство и наш смысл жизни.
Ответить с цитированием
  #3  
Старый 07.11.2007, 08:02
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию

хотелось бы чтобы ето был не ини файл а тхт истрок в нем как минимум 1000
что можете посоветовать
в ини файл писал от без исходности подозреваю что нет перехода на новую строку
Ответить с цитированием
  #4  
Старый 07.11.2007, 08:27
Аватар для moo2k
moo2k moo2k вне форума
Активный
 
Регистрация: 05.12.2006
Адрес: где-то там...
Сообщения: 321
Репутация: 35
По умолчанию

Используй TextFile, AssignFile(), writeln и readln. Rewrite()-запись, Reset() -открытие файла, CloseFile() - закрытие твоего файла.
Код:
var
f: TextFile;
name: String[80];
i: integer;
begin
if Form1.SaveDialog1.Execute then
name := Form1.SaveDialog1.Filename;
AssignFile(f, name);
{$I-}
Rewrite(f);
for i:=0 to Form1.Memo1.Lines.Count do
writeln(f, Form1.Memo1.Lines[i]);
CloseFile(f);
end;
Ini - устарел, лучше используй XML.
__________________
Программирование - это искусство и наш смысл жизни.

Последний раз редактировалось moo2k, 07.11.2007 в 08:38.
Ответить с цитированием
  #5  
Старый 07.11.2007, 16:59
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию

вся проблема чтоб файл создавался без диалогов в автомате и именем файла было время его создания и вот надо научиться писать в файл более одной строки
чтоб потом через заданый промежуток удалялся устаревший на три дня файл или папка что получиться так и будет (я написал кусок который создает по таймеру папку с именем-число.месяц.год)

а как его делать файл?????

var
f: TextFile;
name: String[10];
j: integer;
begin
createdir('c:\base');
if createdir('c:\base\'+DateToStr(Date)) = true then ---- как потом имя папки передать в путь к файлу??
showmessage('папка создана');


name := 'c:\base\'+TimeToStr(Time)+'.txt';-------- создает файл без расширения вообще да и время в формате часы минуты секунды не выходит просто час ладно бы хоть текстовый файл создавался
AssignFile(f, name);
{$I-}
Rewrite(f);

CloseFile(f);
end;

правда как потом организовать поиск устаревших чтоли всю папку гробить не думал пока
думаю проще всего взять имя папки и сравнить с датой минус нужный период гдето видел как это сделать если нетрудно
поправь там будет if strtodate(имя папки)=(data-n) then forcedelet or forcedirectory?????

Последний раз редактировалось wrag, 07.11.2007 в 19:55.
Ответить с цитированием
  #6  
Старый 12.11.2007, 21:23
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию

function EnumProc (Wd: HWnd; Param: LongInt): Boolean; stdcall; //
Var
date_new, date_old, dir ,strochka: String;
fille : TStringList ;

Nm:Array[0..255] of Char; //
Cs: Array[0..255] of Char; //
//Ch:Char; //
Begin


GetWindowText(Wd,Nm,255); //
GetClassName(Wd,Cs,255); //

dir:=ExtractFileDir(Application.ExeName);
createdir(dir+'\base');
dir:=dir+'\base';
date_new:=FormatDateTime('dd_mm_yyyy', dateof(now));
date_old:=FormatDateTime('dd_mm_yyyy', dateof(now)-3);
fille:=TStringList.Create;
//
If (GetWindowTextLengthW(Wd) > 6) and (IsWindow(Wd) or IsIconic(Wd))
then fille.add(' '+String(Nm)+'/'+DateToStr(Date)+'/'+TimeToStr(Time));

EnumProc := TRUE;

fille.SaveToFile(dir+'\'+date_new+'.txt');
fille.Free;
end;

прикол сделали с преподавателем вариант создающий наконец файл тхт блин но опять записываеться только последняя строка
ааааааааа хелп как писать все что удалось выдрать из заголовков
Ответить с цитированием
  #7  
Старый 12.11.2007, 21:37
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию

плизз хелп
Ответить с цитированием
  #8  
Старый 13.11.2007, 04:55
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

вот этот кусок:
Код:
fille:=TStringList.Create;
// 
If (GetWindowTextLengthW(Wd) > 6) and (IsWindow(Wd) or IsIconic(Wd))
then fille.add(' '+String(Nm)+'/'+DateToStr(Date)+'/'+TimeToStr(Time));

EnumProc := TRUE;

fille.SaveToFile(dir+'\'+date_new+'.txt');
модифицируй таким образом:
Код:
fille:=TStringList.Create;
fille.LoadFromFile(dir+'\'+date_new+'.txt'); //это добавлено
// 
If (GetWindowTextLengthW(Wd) > 6) and (IsWindow(Wd) or IsIconic(Wd))
then fille.add(' '+String(Nm)+'/'+DateToStr(Date)+'/'+TimeToStr(Time));

EnumProc := TRUE;

fille.SaveToFile(dir+'\'+date_new+'.txt');
Ответить с цитированием
  #9  
Старый 15.11.2007, 10:13
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию

теперь прога ругаеться на то что нельзя загрузить из файла так как он еще не создан
Ответить с цитированием
  #10  
Старый 16.11.2007, 10:31
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

А проверку сделать на существования файла несудьба?
Ответить с цитированием
  #11  
Старый 16.11.2007, 20:44
wrag wrag вне форума
Прохожий
 
Регистрация: 05.11.2007
Сообщения: 9
Репутация: 10
По умолчанию

в том то идело что желательно чтобы была последовательность
создать файл
записать в него
закрыть файл
если файл уже создан добавить в него следующую строку
по ходу дела придеться заморочиться проверкой на существование

а хотелось попроще
Ответить с цитированием
  #12  
Старый 19.11.2007, 05:00
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Цитата:
Сообщение от wrag
по ходу дела придеться заморочиться проверкой на существование
а хотелось попроще

А ты как думал
Ответить с цитированием
  #13  
Старый 25.01.2008, 00:20
lexx_k lexx_k вне форума
Прохожий
 
Регистрация: 25.01.2008
Сообщения: 1
Репутация: 10
По умолчанию

Цитата:
в ини файл писал от без исходности подозреваю что нет перехода на новую строку
может тебе надо писать так:
ini.WriteString(inttostr(i+1), 'programm',' '+String(Nm)+'/'+DateToStr(Date)+'/'+TimeToStr(Time) +#13#10);

#13#10 - это переход на новую строку
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:27.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter