Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.10.06;
Скачать: CL | DM;

Вниз

Строки после обновления   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.008 c
15-1367219106
O'ShinW
2013-04-29 11:05
2013.10.06
Нарочно не придумаешь..


6-1269679629
syserg
2010-03-27 11:47
2013.10.06
Получить список имен файлов на сайте


15-1366378587
Книжколюб
2013-04-19 17:36
2013.10.06
Кто-нибудь пользуется электронными книгами на базе E-Ink ?


2-1358404977
aka
2013-01-17 10:42
2013.10.06
MediaPlayer


2-1357874385
Ghost del vonte
2013-01-11 07:19
2013.10.06
SFX