Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2010, 22:14   #11
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Эх, ВОВАН13, спасибо тебе большое, что помог с этой частью вопроса мне . Плюс поставил уже. Завтра буду пытаться на свежую голову думать как сделать в случае наличия в имени JPEG файла символа "_". Если есть мысли как можно это сделать, то подскажите?).
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 12.11.2010, 22:23   #12
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
s, ext: string;
i: integer;
...
s := MainForm.ListBox1.Items[i];
i := LastDelimiter(s, '.');
if (i > 0) then // found '.'
begin
  ext := Copy(s, i, Length(s)); // copy everything after '.', and including it
  if (ext = '.jpeg') then // found '.jpeg' extension
  begin
    s := Copy(s, 1, i) + 'pdf'; // rename
    
    // try to detect '_'
    i := Pos(s, '_');
    if (i > 0) then
    begin
      // do whatever you want to
    end;

    // wotk here with pdf/jpeg named as variable s
    ...
  end;
end;
p.s. может конечно что-то не так, на дельфи дааавно не писал, ну и за инглиш прошу прощения, надеюсь все и так ясно.
BOBAH13 вне форума Ответить с цитированием
Старый 13.11.2010, 10:11   #13
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Давайте попробуем разобраться в последнем коде. Правильно ли я его понял?
Код:
s, ext: string;
i: integer;
...
s := MainForm.ListBox1.Items[i]; //строкой переменной присваиваем все jpeg файлы из списка
i := LastDelimiter(s, '.'); //указываем разделитель "." в имени jpeg файлов
if (i > 0) then // если он найден, то...
begin
  ext := Copy(s, i, Length(s)); // копируем все, что идет после "." из строки s
  if (ext = '.jpeg') then // нашли расширение '.jpeg' 
  begin
    s := Copy(s, 1, i) + 'pdf'; // переименовываем в pdf
    
    // пытаемся определить символ  '_' в имени jpeg файла
    i := Pos(s, '_'); //указываем, что в нашей переменной s может быть "_"
    if (i > 0) then //если нашли, то....
    begin
      ListeJPGtoPDF(list,....
    end;

    // здесь работает с pdf/jpeg как с переменной s - вот это я не понял.
    ...
  end;
end;
Так?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.11.2010, 10:20   #14
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1.
Код:
//строкой переменной присваиваем все jpeg файлы из списка
Не все файлы, а файл под индексом i
2.
Код:
// копируем все, что идет после "." из строки s
+ включая саму '.'
3.
Код:
// здесь работает с pdf/jpeg как с переменной s - вот это я не понял.
ну да, делайте то что вам угодно, у вас в этот момент полное имя целевого файла .pdf = s (переменная), и имя исходного jpeg = MainForm.ListBox1.Items[i];. Тут уже делайте то что должно быть заложено в логику вашего ПО.
BOBAH13 вне форума Ответить с цитированием
Старый 13.11.2010, 16:43   #15
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот так нужно?
Код:
procedure TMainForm.BtnHelp1Click(Sender: TObject);
var
 k,i: integer;
 list: TStringList;
 s,ext: string;
begin
 list:=TStringList.Create;
 MainForm.SaveDialog1.FileName:='*.pdf';
 MainForm.SaveDialog1.Title:='Èìåíà äëÿ ôàéëîâ çàäàâàòü íå íóæíî. Íàæìèòå ñðàçó "Ñîõðàíèòü".';
 MainForm.SaveDialog1.FileName:=DateToStr(Now);
 if SaveDialog1.Execute then
  begin
   for i:=0 to MainForm.ListBox1.Count - 1 do
   begin
    list.Clear;
    list.Add(MainForm.ListBox1.Items[i]);
    s:=MainForm.ListBox1.Items[i];
    i:=LastDelimiter(s,'.');
    if (i > 0) then
    begin
     ext:=Copy(s,i,Length(s));
     if (ext = '.jpeg') then
     begin
      s:=Copy(s,1,i) + 'pdf';
      i:=Pos(s,'_');
      if (i > 0) then
      begin
       k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
      end;
     end;
    end;
   end;
  end;
  list.Free;
end;
так ругается на выделенную строчку и говорит, что "[Error] MAIN.PAS(840): Assignment to FOR-Loop variable 'i'"
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 13.11.2010, 17:52   #16
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. ListeJPGtoPDF - будет вызываться только если '_' существует в строке.
2. for i:=0 to MainForm.ListBox1.Count - 1 do замените на for n:=0 to MainForm.ListBox1.Count - 1 do, разумеется прежде объявив n как integer
BOBAH13 вне форума Ответить с цитированием
Старый 13.11.2010, 18:14   #17
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Че-то я запутался....а когда тогда будет вызываться ListeJPGtoPDF ?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.11.2010, 00:54   #18
Gonzo
Форумчанин
 
Аватар для Gonzo
 
Регистрация: 07.03.2009
Сообщений: 123
По умолчанию

artemavd, а ListeJPGtoPDF не поделишься?
Не говорите что мне делать, и я не скажу куда Вам идти.
Пишу программы на заказ на Delphi и Pascal
Форум разработчиков Pascal и Delphi

Последний раз редактировалось Gonzo; 19.11.2010 в 00:56.
Gonzo вне форума Ответить с цитированием
Старый 19.11.2010, 10:20   #19
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Да пожалуйста, вот архив. В uses пропиши название модуля и можешь использовать процедуру ListeJPGtoPDF
Вложения
Тип файла: zip jpeg2pdf.zip (7.2 Кб, 24 просмотров)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 19.11.2010, 10:23   #20
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Че-то я запутался....а когда тогда будет вызываться ListeJPGtoPDF ?
Ну я не знаю вам нужно чтобы конвертировалось в pdf только если есть символ '_' или все jpeg? Если все, то тогда так
Код:
ext:=Copy(s,i,Length(s));
     if (ext = '.jpeg') then
     begin
      s:=Copy(s,1,i) + 'pdf';
      //i:=Pos(s,'_');
      //if (i > 0) then
      //begin
k:=ListeJPGtoPDF(list,Copy(MainForm.ListBox1.Items[i],1,Pos('.',MainForm.ListBox1.Items[i])-1) + '.pdf');
      //end;
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СОХРАНЕНИЕ В ФОРМАТЕ *.PDF provodnikam Microsoft Office Word 10 20.02.2010 10:31
Загрузка файлов формата PDF или DJVU Maks1978 JavaScript, Ajax 11 05.02.2009 11:54
Печать pdf файлов из списка файлов в Excel АПС Microsoft Office Excel 5 15.04.2008 16:04
Импорт doc и pdf файлов в базу omi БД в Delphi 3 30.06.2007 00:37