Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сохранить файл, а если уже есть так - то (1), (2) и т.д. 
:(
    Опции темы
Балбес
Дата 7.12.2004, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.8.2004

Репутация: нет
Всего: нет



Привет всем!
Подскажите какой код использовать чтобы при сохранении файла учитывалось, что если там уже есть файл с таким именем, то сохранять новый файл с именем (1) или с именем (2) и т.д.
smile
PM MAIL   Вверх
Dimich
Дата 7.12.2004, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 247
Регистрация: 25.8.2004
Где: Брянск

Репутация: 1
Всего: 7



1. Функцией FileExist (FileName : string) проверяешь, есть ли уже такой файл.
2. Изменяешь имя файла и снова на пункт 1 пока не получишь уникальное имя файла
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
Полудненко Олег
Дата 7.12.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Українець
**


Профиль
Группа: Участник...
Сообщений: 556
Регистрация: 13.8.2003

Репутация: 1
Всего: -11



Проверяеш существование файла функцией FileExists(Name:String):boolean, где Name - имя файла. Если файл существует то в цикле начинаеш подбирать нужную цифру.
PM MAIL   Вверх
Балбес
Дата 7.12.2004, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 19.8.2004

Репутация: нет
Всего: нет



Покажите пример пожалуйста, а то у меня не получается...
вот с этим:
memo1.Lines. SaveToFile
PM MAIL   Вверх
PZ
Дата 7.12.2004, 18:59 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Надо указать имя файла:

memo1.Lines. SaveToFile('MyFile.txt') ;
  Вверх
Zero
Дата 7.12.2004, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(PZ @ 7.12.2004, 18:59)
memo1.Lines. SaveToFile('MyFile.txt') ;

Не совсем корректно написано, более правильно будет так:
Код

memo1.Lines. SaveToFile('<Путь>+MyFile.txt');
Пример:
Код

memo1.Lines. SaveToFile('c:\MyFile.txt');

PM MAIL ICQ   Вверх
RA
Дата 7.12.2004, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Код

var
f1,F2:string;

begin
F1:='C:\my.Txt';
F2:=F1;
I:=0;


while fileExists(F1)  do
begin
F1:=F2+'('+ IntToStr(i) + ')';
inc(i);

end;

memo1.Lines. SaveToFile(F1);

end;


Это сообщение отредактировал(а) RAdmin - 7.12.2004, 19:51
PM   Вверх
SlaUr
Дата 8.12.2004, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 408
Регистрация: 18.9.2003

Репутация: 3
Всего: 5



Function WhatFileName(path:string):string; Модуль MySys

Это сообщение отредактировал(а) SlaUr - 8.12.2004, 05:32
PM MAIL   Вверх
EKoshelev
Дата 8.12.2004, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 509
Регистрация: 1.9.2004

Репутация: нет
Всего: нет



RAdmin
Только номера будут после расширения добавляться...

[/code]
Код

procedure SaveFile(FName: string);
var
     nam1, nam2, NewFN: string;
     p, i: integer;
begin
 p := Pos('.', FName);
 nam1 := Copy(FName, 1, p - 1);
 nam2 := Copy(FName, p, Length(FName) - p + 1);
 // хотя легко можно сделать, чтобы этот фрагмент глюканул

 i := 1;
 NewFN := nam1 + nam2;
 while FileExists(NewFN) do
 begin
   NewFN := nam1 + '(' + IntToStr(i) + ')' + nam2;
   inc(i);
 end;

 Memo1.Lines.SaveToFile(NewFN);
end;[code=delphi]



--------------------
Вежливым и адекватным предлагаю общаться на "ты".
PM MAIL   Вверх
RA
Дата 8.12.2004, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



EKoshelev да чёто както я забыл забы. smile
PM   Вверх
z-END
Дата 10.12.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Код

function UniqueFile(S: TFileName):TFileName;
var
x: Integer;
Dir, FName, Ext: String;
begin
Dir := ExtractFIlePath(S);
FName := ChangeFileExt (ExtractFIleName(S), '');
Ext := ExtractFileExt(S);
x:=1;
Result := S;
 while fileexists (Result) do
  begin
    Result := Dir + FName + '_' + inttostr (x) + Ext;
 Inc(x);
end;
end;

Пример использования:
Код

memo1.Lines. SaveToFile (UniqueFile ('c:\MyFile.txt'));




--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Medved
Дата 11.12.2004, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



Цитата(Zero @ 7.12.2004, 22:32)
Цитата(PZ @ 7.12.2004, 18:59)
memo1.Lines. SaveToFile('MyFile.txt') ;

Не совсем корректно написано, более правильно будет так:
Код

memo1.Lines. SaveToFile('<Путь>+MyFile.txt');
Пример:
Код

memo1.Lines. SaveToFile('c:\MyFile.txt');

Так тоже работать будет.


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir13
Дата 14.12.2004, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



а если так:
var i:integer;
p,path,filename,format:string;
begin
if i=o then p:='';
if i>0 then p:=IntToStr(i);
while FileExists(NewFileName) do
begin
NewFileName := path +Filename+p+format;
inc(i);
end;
Memo1.Lines.saveToFile(Newfilename);
end;
//format='.txt'
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
Zero
Дата 15.12.2004, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Цитата(Pegas @ 11.12.2004, 15:28)
Так тоже работать будет.

А ну да, чё-то я тормознул. smile
PM MAIL ICQ   Вверх
Vladimir13
Дата 16.12.2004, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



мой способ рботает. можно пользоваться
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
z-END
Дата 19.12.2004, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Vladimir13 позвольте спросить в каком месте он работает? если уж говорить о том что он 100% работает, то и писать его тоже надо полностью...
1. где у вас инициализируются переменные path, filename?
2. этот кусок кода вообще не рабочий т.к. при первом проходе переменная NewFileName вообще не задана, соотвтственно такого файла нет!
Цитата
while FileExists(NewFileName) do
begin
NewFileName := path +Filename+p+format;
inc(i);

3. опять же по этому куску кода... Допустим (абстрактно) переменная NewFileName силами господа Бога, все же была инициализирована, и такой файл существует, то каким способом эта же переменная примет нужное значение??? i увеличится, но она же никак не влияет на название нового файла...

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


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Vladimir13
Дата 19.12.2004, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 208
Регистрация: 8.12.2004
Где: Волгоград, Россия

Репутация: 1
Всего: 1



а догадаться, что переменные задать надо никак? Ведь если кому непонятно, напишут об этом. А для самообразования я использую Архангельского.
--------------------
Лучший метод - метод тыкаобращаться по адресу: mvdr
PM MAIL ICQ   Вверх
z-END
Дата 20.12.2004, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 11
Всего: 102



Vladimir13 да бог с ними с переменными, хотя тоже это не есть хорошо, т.к. для того чтобы сохранить файл надо задавать их каждый раз что неочень удобно, а что вы можете сказать по 2 и 3 пункту?!


--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1311 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.