Главная страница
    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.004 c
2-1358524343
Proshka
2013-01-18 19:52
2013.10.06
Строки после обновления


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


15-1366649723
Rouse_
2013-04-22 20:55
2013.10.06
Нужен третейский судья :)


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


15-1365965231
ProgRAMmer Dimonych
2013-04-14 22:47
2013.10.06
Парсинг PHP-кода





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский