Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
6-1269002359
eu1bc
2010-03-19 15:39
2013.10.06
Компоненты TNMMsg и TNMMsgSer


15-1366947804
Genry_
2013-04-26 07:43
2013.10.06
Oracle between


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


15-1363095630
О-Сознание
2013-03-12 17:40
2013.10.06
Трабла с директивой


15-1366662603
Юрий
2013-04-23 00:30
2013.10.06
С днем рождения ! 23 апреля 2013 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский