Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
ВнизСтроки после обновления Найти похожие ветки
← →
Proshka (2013-01-18 19:52) [0]Мастера, помогите пожалуста
Открыл в XE3 (Эмбаркадеро) подредактировать програмку написанную мной же в D6. Скомпиленная тогда еще в D6 она и сейчас работает, а перекомпиленная в XE3 - нихотит.
Проблемная подпрограмма - вот она
procedure moov(FType: string);
var
TSR: TSearchRec;
i: integer;
si,ssss,onstr,nnstr: string;
begin
i:=10*(10+StrToInt(Copy(ss,7,2)));
ssss:=CDir+"*"+ftype;
if FindFirst(CDir+"*"+ftype,faAnyFile,TSR) = 0 then repeat
inc(i); si:=IntToStr(i);
onstr:=CDir+TSR.Name;
nnstr:=CnPath+si+FType;
RenameFile(onstr,nnstr);
Form1.Label4.Caption:=nnstr;
until FindNext(TSR)<>0;
end;
Я "разбавил" ее переменными и выводом в лэйблы пытаясь понять....
Мне не помогло.
Странно что в режиме отладки переменная получается "правильной", именно сумма CnPath+si+FType, а вот Label4.Caption ее отображает почемуто "обрезанной", равной только CnPath
По видимому такойже "недоделанной" она попадает и в функцию RenameFile оттого она и не работает.
А вот понять откуда тут ноги равтут моего ума не хватает.
Помогите, а?
← →
bems © (2013-01-18 20:03) [1]а чё такое CDir?
← →
Proshka (2013-01-18 20:05) [2]
CDir:= GetCurrentDir + "\";
← →
Proshka (2013-01-18 20:06) [3]CDir:= GetCurrentDir + "\"; тут в кавычках косая черта (слэш)
← →
bems © (2013-01-18 20:07) [4]а ss? и где оно все инициализируется?
давай полный код, а то непонятно же ничего
← →
Proshka (2013-01-18 20:12) [5]unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
SetFileName: String = "PictureMoover.set";
SetFile: TextFile;
FileType: array[1..20] of string;
NumT,sp,j: integer;
CDir,CnDir,CnPath,CFile,CDate,CTime,ss,sd: string;
procedure moov(FType: string);
var
TSR: TSearchRec;
i: integer;
si,ssss,onstr,nnstr: string;
begin
i:=10*(10+StrToInt(Copy(ss,7,2)));
ssss:=CDir+"*"+ftype;
if FindFirst(CDir+"*"+ftype,faAnyFile,TSR) = 0 then repeat
inc(i); si:=IntToStr(i);
onstr:=CDir+TSR.Name;
nnstr:=CnPath+si+FType;
RenameFile(onstr,nnstr);
Form1.Label2.Caption:=si+FType;
Form1.Label3.Caption:=onstr;
Form1.Label4.Caption:=nnstr;
until FindNext(TSR)<>0;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
NumT:=0;
AssignFile(SetFile,SetFileName);
Reset(SetFile);
while not Eof(SetFile) do begin
inc(NumT);
Readln(SetFile,FileType[NumT]);
end;
CDir:= GetCurrentDir + "\";
CDate:=DateToStr(Date);
Label1.Caption:= CDir;
Label2.Caption:=CDate;
ss:= TimeToStr(Time);
Label3.Caption:=ss;
CTime:="("+ copy(ss,1,5) +")-";
CnDir:=CDir + copy(CDate,7,4) +"."+ copy(CDate,4,2);
Label4.Caption:= CnDir;
if not DirectoryExists(CnDir) then CreateDir(CnDir);
sd:= Copy(CDate,1,2)+"."+Copy(CDate,4,2)+"."+Copy(CDate,7,2);
CnPath:=CnDir + "\" + sd + CTime;
for j:=1 to NumT do moov(FileType[j]);
Label4.Caption:=CnPath;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
RenameFile("e:\temp\1111.txt","e:\temp\1\2222.txt")
end;
end.
← →
Proshka (2013-01-18 20:14) [6]сорри, последняя процедура к делу отношения не имеет, я ею проверял правильно ли я пользую RenameFile
← →
Proshka (2013-01-18 20:18) [7]программа все фото (расширения в "PictureMoover.set" в виде ".jpg") в своем каталоге, переименовывает в сегодняшнюю дату и ложит их в папку именем текущего месяца вида "гггг.мм" ,папку создает если ее нет
← →
bems © (2013-01-18 20:35) [8]
> Странно что в режиме отладки переменная получается "правильной",
> именно сумма CnPath+si+FType, а вот Label4.Caption ее отображает
> почемуто "обрезанной", равной только CnPath
вот поэтому
> for j:=1 to NumT do moov(FileType[j]);
> Label4.Caption:=CnPath;
ты сразу после moov перезаписываешь Label4.Caption
← →
Proshka (2013-01-18 20:38) [9]и правда, пасиб, только RenameFile(onstr,nnstr); всеравно не работает ((
← →
Proshka (2013-01-18 20:54) [10]аааа, нашел кажись, там в новом имени двоеточие выскакивает...
Спасибо
← →
bems © (2013-01-18 20:55) [11]GetLastError что возвращает?
← →
Игорь Шевченко © (2013-01-18 20:55) [12]if not RenameFile(onstr,nnstr) then
RaiseLastOsError;
← →
Proshka (2013-01-18 21:06) [13]я не знал этих функций, буду юзать , спасибо. А шибка была в CTime:="("+ copy(ss,1,5) +")-";
она ":" внутри дает
переделал в CTime:="("+ copy(ss,1,2)+"."+copy(ss,4,2) +")-";
работает, спасибо еще раз
← →
Proshka (2013-01-18 21:08) [14]CTime используется в имени файла, а там
двоеточие нельзя
← →
bems © (2013-01-18 21:09) [15]а что будет при других форматах даты и времени ты предпочитаешь не думать. ну правильным путём идешь, чо
← →
Proshka (2013-01-18 21:14) [16]хе, я изза этих форматов прогу уже переделывал при переходе с ХР на W7, а как же его правильно написать?
С другой стороны этой программой только я пользуюсь, ну может еще 2 человека...
← →
Proshka (2013-01-18 21:18) [17]Не судите строго, хоть я Делфи и пользуюсь с 5 версии но запускаю ее раза 2 в году...
← →
clickmaker © (2013-01-18 21:37) [18]> как же его правильно написать?
FormatDateTime()
← →
Proshka (2013-01-18 22:05) [19]ага, спасибо
← →
bems © (2013-01-18 22:11) [20]
> FormatDateTime()
это ответ как форматировать дату. а если почитать код, то там другая проблема - из даты получается строка, а она потом парсится. вместо этого нужно делать DecodeTime и DecodeDate, минуя строковое представление
← →
clickmaker © (2013-01-18 22:58) [21]а зачем там вообще что-либо парсить? Если задача
> программа все фото (расширения в "PictureMoover.set" в виде
> ".jpg") в своем каталоге, переименовывает в сегодняшнюю
> дату и ложит их в папку именем текущего месяца
← →
bems © (2013-01-18 23:32) [22]так и я говорю что не нужно, а нужно брать все компоненты из самой даты
← →
Proshka (2013-01-19 01:09) [23]пожалуй я ее всю перепишу ))
тем более что возникла необходимость вытаскивать дату из сбойств файла и если она коректна - использовать ее в имени
← →
Inovet © (2013-01-19 01:31) [24]> [23] Proshka (19.01.13 01:09)
> вытаскивать дату из сбойств файла и если она коректна
А может быть не корректна?
← →
Германн © (2013-01-19 02:28) [25]
> А может быть не корректна?
Может. Если её неграмотно "вытаскивать из свойств файла". :)
← →
Dimka Maslov © (2013-01-19 11:15) [26]При переное программ в новые версии Delphi прежде всего надо помнить о том, что тип string претерпел колоссальные изменения и теперь означает вовсе не то, что было в винтажных версиях. Это я про юникоды.
← →
Proshka (2013-01-19 18:05) [27]> А может быть не корректна?
я в первую очередь думал оне выставленных часах в фотике, тогда фотки будут датированы скажем годом 2001, а делались они на самом деле в течение последнего полугода.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.10.06;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.003 c