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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2016, 13:16   #21
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
вот я вот так делаю
Да мне пох, как ты делаешь!
Я ж исходные данные просил. ДАННЫЕ! Не код твой, а ДАННЫЕ!!!
Ты ж просил прогрессбар прицепить.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 04.02.2016, 13:18   #22
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от mitiay Посмотреть сообщение
Он удаляет все до первой запятой,а нужно удалить в каждой строчке все после запятой
изначально не парвильно прочитал задание break; уберите, и все у вас будет в моем варианте
а ну и J обнуляйте
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 04.02.2016 в 13:20.
Dvoishnik вне форума Ответить с цитированием
Старый 04.02.2016, 13:28   #23
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
procedure TForm1.Button2Click(Sender: TObject);
var
 i, n: Integer;
begin
   n:= Memo1.Lines.Count - 1;
   ProgressBar1.Max:= n;
   for i:= 0 to n do
   begin
   Application.ProcessMessages;
   Memo1.Lines[i]:= Copy(Memo1.Lines[i], 1, Pos(',', Memo1.Lines[i]) - 1);
   ProgressBar1.Position:= i;
   end;
   ProgressBar1.Position:= 0;
   ShowMessage('Обработка завершена.');
end;
Iron Monk вне форума Ответить с цитированием
Старый 04.02.2016, 16:46   #24
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Блин, чот медленно работает... Тестировал на файле 10+ Мбайт.


Ускорьте алгоритм, кому интересно. Прогу с исходниками прицепляю.
Вложения
Тип файла: zip pf_289028.7z.zip (1.10 Мб, 9 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 04.02.2016 в 16:56.
min@y™ вне форума Ответить с цитированием
Старый 04.02.2016, 17:13   #25
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

То же самое на 100000 строк в StringList с загрузкой/выгрузкой в мемо делается за пару десятых секунды. Прогу не смотрел, 7z не использую и ставить нет ни какого желания
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2016, 17:41   #26
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

у меня вышло 5 секунд на выгрузку из файла в мемо и 40 на обработку и выгрузку из лист бокс.
файл >15Мб

Код:
var
  j,i: Integer;
  var StrList: TStringList;
begin
  Memo1.Lines.LoadFromFile('file.txt');
  StrList:=TStringList.Create;
  for i:=0 to Memo1.Lines.Count - 1 do
  begin
   j:=Pos(',', Memo1.Lines[i])-1 ;
   if j>0 then
    Begin
     StrList.Add(Copy(Memo1.Lines[i], 1,j));
    end
      else StrList.Add(Memo1.Lines[i]);
    j:=0;
  end;
  Memo1.Lines:= StrList;

end;
как это быстрее сделать?
Терпение!Дежурный экстрасенс скоро свяжется с вами!

Последний раз редактировалось Dvoishnik; 04.02.2016 в 17:46.
Dvoishnik вне форума Ответить с цитированием
Старый 04.02.2016, 17:48   #27
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
for i:=0 to Memo1.Lines.Count
Это ни к чему. StringList.Text:=Memo1.Lines.Text и цикл по строкам StringList.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.02.2016, 10:09   #28
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
у меня вышло 5 секунд на выгрузку из файла в мемо и 40 на обработку и выгрузку из лист бокс.
файл >15Мб

Код:
var
  j,i: Integer;
  var StrList: TStringList;
begin
  Memo1.Lines.LoadFromFile('file.txt');
  StrList:=TStringList.Create;
  for i:=0 to Memo1.Lines.Count - 1 do
  begin
   j:=Pos(',', Memo1.Lines[i])-1 ;
   if j>0 then
    Begin
     StrList.Add(Copy(Memo1.Lines[i], 1,j));
    end
      else StrList.Add(Memo1.Lines[i]);
    j:=0;
  end;
  Memo1.Lines:= StrList;

end;
как это быстрее сделать?
Это удаляет после запятой,А как сдеать чтобы До запятой?
mitiay вне форума Ответить с цитированием
Старый 15.02.2016, 10:32   #29
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Это удаляет после запятой,А как сдеать чтобы До запятой?
я бы такой код попробовал:
Код:
var 
  s : string;
  j,i: Integer;
 StrList: TStringList;
begin
  StrList:=TStringList.Create;
  StrList.LoadFromFile('file.txt')
  for i:=0 to StrList.Count - 1 do
  begin
    s :=  StrList.Strings[i];   
    j := Pos(',',s);
    if j>0 then 
      StrList.Strings[i] := Copy(s,j+1, Length(s)-j);
  end;
  Memo1.Lines:= StrList;
  StrList.Free;
end
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.02.2016, 10:37   #30
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы такой код попробовал:
Код:
var 
  s : string;
  j,i: Integer;
 StrList: TStringList;
begin
  StrList:=TStringList.Create;
  StrList.LoadFromFile('file.txt')
  for i:=0 to StrList.Count - 1 do
  begin
    s :=  StrList.Strings[i];   
    j := Pos(',',s);
    if j>0 then 
      StrList.Strings[i] := Copy(s,j+1, Length(s)-j);
  end;
  Memo1.Lines:= StrList;
  StrList.Free;
end
ругается на Lines.Count, а на моем примере можете продемонстрировать?)
mitiay вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить все, что после символа fijiisland Microsoft Office Excel 8 31.03.2017 16:04
Как удалить все строки кроме первой, после автофильтра myosotis Microsoft Office Excel 2 30.01.2013 19:31
Делфи. Удалить все лова после 5-го serhan Помощь студентам 3 09.02.2012 13:40
как удалить знаки после запятой ukrman Microsoft Office Excel 11 03.02.2012 17:22
Разделение чисел на до запятой и после запятой msser Microsoft Office Excel 8 23.10.2009 11:57