Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Форматирование текста  [new]
чччД
Guest
Няшик,

и так, ни одной строки кода, где "гоняются строки по много раз" строки, ты не привел. Невменяемость.

Няшик
Первая переменная bool всегда в false.

Еще раз: это локальная переменная. Упоротость.

И "Лошарик" - это слишком мягко.
29 сен 17, 01:49    [20830619]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
чччД
Няшик,

и так, ни одной строки кода, где "гоняются строки по много раз" строки, ты не привел. Невменяемость.

Няшик
Первая переменная bool всегда в false.

Еще раз: это локальная переменная. Упоротость.

И "Лошарик" - это слишком мягко.


Всё что надо, я уже привёл в данном сообщение 20830577

Няшик
  repeat
      j := Pos('  ',S);
      if j > 0 then S := StringReplace(S,'  ',' ',[rfReplaceAll]);
    until j = 0;



Логик, вовсе не я ... В данном коде уже и гоняется одна единственная строка очень много раз.

Ты когда машину покупаешь, и производитель подсовывает не настроенный карбюратор который сосёт бенз понапрасну. Тоже будешь защищать? Ну тогда лашарик больше подходит не мне. А..


В общем, не вижу повода больше продолжать с тобою разговор. Тема превращается в муссор от твоих сообщений упортых
29 сен 17, 02:01    [20830623]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
schi
Member

Откуда: Москва
Сообщений: 2218
Няшик
Эти функции плохи тем, что они гоняют одни и те же строки по много раз. И тормозят код во много. Мой же код, использует два цикла. Один, что бы прогнать основную строку, и второй - убрать лишние пробелы.

Просто - та кода. А у вас - дикий лес из тормозов.


Полезные ресурсы тратите попросту.


Расскажи это веб-программистам (на том же PHP/Javascript). Там под капотом столько трат полезных ресурсов, что впору кампанию за спасение вселенной от тепловой смерти организовывать.
29 сен 17, 10:31    [20831000]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
schi
Расскажи это веб-программистам (на том же PHP/Javascript). Там под капотом столько трат полезных ресурсов, что впору кампанию за спасение вселенной от тепловой смерти организовывать.


Веб - это веб, и там бесполезно что либо говорить. А тут - всё в руках самого программиста.

По этому, я и пишу свой интерпретатор.
29 сен 17, 10:45    [20831053]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
DimaBr
Member

Откуда:
Сообщений: 10215
Ваш код с указателями труден для понимания начинающим программистам.
Если человек не может самостоятельно написать элементарный код с заменой пробелов, то о каких указателях может идти речь ?
О скорости для разовой операции в 100к строк говорить не приходится. 5 секунд не имеют никакого значения
29 сен 17, 11:39    [20831263]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
DimaBr,

=_= Если спорить о понимании указателей, и с тем - как работать с данными функциями Pos и StringReplace, с их аргументами и.т.д.

То указатели это маленькие ясли. По сравнению с бугаями

var1 = P^; // Берём указатель на текущий элемент


var1 = (P + 1)^;  // Смещаем указатель на SizeOf(P) * 2. И берём текущий  элемент. 



inc(p); // Просто перемещаем на следующий элемент, текущий указатель p = p  + (SizeOf(P) * 2);


Ай как сложно.
29 сен 17, 11:57    [20831326]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
schi
Member

Откуда: Москва
Сообщений: 2218
Няшик
Веб - это веб, и там бесполезно что либо говорить. А тут - всё в руках самого программиста.

По этому, я и пишу свой интерпретатор.


На ассемблере, чтобы впустую ценные ресурсы не тратить ?
29 сен 17, 12:05    [20831352]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
schi
На ассемблере, чтобы впустую ценные ресурсы не тратить ?


Это уже идеологии. Даже на c++ используют ассемблер, дабы оптимизировать - то, что не оптимизируется.

В частности, это какие нибудь инструменты по работе с изображением, и.т.д.
29 сен 17, 12:08    [20831361]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 1536
Няшик
Кто сказал что не решает?
Я. Прочти внимательнее что именно надо ТС-у
29 сен 17, 12:52    [20831470]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
white_nigger
Няшик
Кто сказал что не решает?
Я. Прочти внимательнее что именно надо ТС-у


Приношу извинения за свою не внимательность. Между словами, на символ таба

Вот реализация

+
function RepSpToTabs(const str: string): string;
var
  l, r, c: Integer;
  w: Boolean;
begin
  l := Length(str);
  SetLength(Result, l);

  w := False;
  r := 1;
  c := 1;
  while r <= l do
  begin
    if w and (str[r] = ' ') and (str[r + 1] = ' ') then
    begin
      Result[c] := #$9;
      inc(r, 2);
      while str[r] = ' ' do
        inc(r);
    end
    else
    begin
      Result[c] := str[r];
      w := str[r] <> ' ';
      inc(r);
    end;
    inc(c);
  end;
  SetLength(Result, r - 1);
end;
29 сен 17, 13:19    [20831580]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
YuRock
Member

Откуда: Донецк
Сообщений: 2067
DimaBr
О скорости для разовой операции в 100к строк говорить не приходится. 5 секунд не имеют никакого значения

Кто сказал, что для разовой?
А если это постоянная операция, параллельно выполняемая в сотне потоков по 10000 раз?
Во и будет разница. Не то, что секунды важны. Проценты прироста производительности бывают важны.
29 сен 17, 15:05    [20831948]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
schi
Member

Откуда: Москва
Сообщений: 2218
Няшик
white_nigger
пропущено...
Я. Прочти внимательнее что именно надо ТС-у


Приношу извинения за свою не внимательность. Между словами, на символ таба

Вот реализация

+
function RepSpToTabs(const str: string): string;
var
  l, r, c: Integer;
  w: Boolean;
begin
  l := Length(str);
  SetLength(Result, l);

  w := False;
  r := 1;
  c := 1;
  while r <= l do
  begin
    if w and (str[r] = ' ') and (str[r + 1] = ' ') then
    begin
      Result[c] := #$9;
      inc(r, 2);
      while str[r] = ' ' do
        inc(r);
    end
    else
    begin
      Result[c] := str[r];
      w := str[r] <> ' ';
      inc(r);
    end;
    inc(c);
  end;
  SetLength(Result, r - 1);
end;


Ты уверен, что твоя реализация работает ? Я не уверен.
В этой строчке условие должно выполняться, если следуют три пробела подряд.

 if w and (str[r] = ' ') and (str[r + 1] = ' ') then
29 сен 17, 16:23    [20832205]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
schi
Няшик
пропущено...


Приношу извинения за свою не внимательность. Между словами, на символ таба

Вот реализация

+
function RepSpToTabs(const str: string): string;
var
  l, r, c: Integer;
  w: Boolean;
begin
  l := Length(str);
  SetLength(Result, l);

  w := False;
  r := 1;
  c := 1;
  while r <= l do
  begin
    if w and (str[r] = ' ') and (str[r + 1] = ' ') then
    begin
      Result[c] := #$9;
      inc(r, 2);
      while str[r] = ' ' do
        inc(r);
    end
    else
    begin
      Result[c] := str[r];
      w := str[r] <> ' ';
      inc(r);
    end;
    inc(c);
  end;
  SetLength(Result, r - 1);
end;


Ты уверен, что твоя реализация работает ? Я не уверен.
В этой строчке условие должно выполняться, если следуют три пробела подряд.

 if w and (str[r] = ' ') and (str[r + 1] = ' ') then


Уверен
  w := str[r] <> ' ';
29 сен 17, 17:11    [20832342]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
schi
Member

Откуда: Москва
Сообщений: 2218
Няшик
schi
пропущено...


Ты уверен, что твоя реализация работает ? Я не уверен.
В этой строчке условие должно выполняться, если следуют три пробела подряд.

 if w and (str[r] = ' ') and (str[r + 1] = ' ') then


Уверен
  w := str[r] <> ' ';


     w := str[r] <> ' ';
      inc(r);


r уже на следующий неизвестный символ строки указывает

 if w and (str[r] = ' ') and (str[r + 1] = ' ') then


В этом случае, чтобы сработало условие, нужно, чтобы символ по текущему r-1 б был равен пробелу (чтобы w стало истинным), символ по текущему r был пробелом и символ по r+1 был пробелом.
Итого, три пробела подряд заменяются табом.

А за идентфикатор l, который легко принять за 1 тебе в аду будет отдельная сковородка приготовлена, с ускоренным подогревом.
29 сен 17, 17:17    [20832348]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
schi,

Кхм. Мы смотрим - не был ли текущий символ пробелом, если нет, то true.


Я ничего тебе объяснять не хочу. Я всего лишь приложу скриншот.

Картинка с другого сайта.
29 сен 17, 18:07    [20832429]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
Случайно срезал один символ пока копировал

Картинка с другого сайта.
+
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils;

function RepSpToTabs(const str: string): string;
var
  l, r, c: Integer;
  w: Boolean;
begin
  l := Length(str);
  SetLength(Result, l);

  w := False;
  r := 1;
  c := 1;
  while r <= l do
  begin
    if w and (str[r] = ' ') and (str[r + 1] = ' ') then
    begin
      Result[c] := #$9;
      inc(r, 2);
      while str[r] = ' ' do
        inc(r);
    end
    else
    begin
      Result[c] := str[r];
      w := str[r] <> ' ';
      inc(r);
    end;
    inc(c);
  end;
  SetLength(Result, r - 1);
end;

var
  str: string;

begin
  try
    str := '  g 54           6767         67  rh';
    str := RepSpToTabs(str);
    Writeln(str);
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

end.
29 сен 17, 18:09    [20832433]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
Скрин отладки ещё приложу

+
Картинка с другого сайта.
29 сен 17, 18:12    [20832435]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2366
schi
А за идентфикатор l, который легко принять за 1 тебе в аду будет отдельная сковородка приготовлена, с ускоренным подогревом.


не.
он не понимает
29 сен 17, 18:27    [20832449]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
Tactical Nuclear Penguin

не.
он не понимает


Да какая разница, если пример демонстрационный. У некоторых мозги в кашку поехали, от лени с этими функциями pos и str replace

Такое чувства что сложное что они делают, это дают правильные и красивые имена переменным, и на этом в общем - то всё.
29 сен 17, 18:32    [20832456]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
Наверно дальтоником надо быть, что бы спутать синюю букву с чёрной

Картинка с другого сайта.
29 сен 17, 18:35    [20832461]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Tactical Nuclear Penguin
Member

Откуда: холодно тут
Сообщений: 2366
Няшик
Наверно дальтоником надо быть, что бы спутать синюю букву с чёрной

Картинка с другого сайта.


рад за ваше зрение

но все таки
Джон Ф. Вудс
Пишите код, исходя из того, что все программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живёте.
29 сен 17, 18:52    [20832472]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
Tactical Nuclear Penguin
но все таки
Джон Ф. Вудс
Пишите код, исходя из того, что все программисты, которые будут сопровождать вашу программу, — склонные к насилию психопаты, знающие, где вы живёте.


Картинка с другого сайта.
29 сен 17, 18:59    [20832475]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
schi
Member

Откуда: Москва
Сообщений: 2218
[quot Няшик]Наверно дальтоником надо быть, что бы спутать синюю букву с чёрной


function RepSpToTabs(const str: string): string;
var
  l, r, c: Integer;
  w: Boolean;
begin
  l := Length(str);
  SetLength(Result, l);

  w := False;
  r := 1;
  c := 1;
  while r <= l do
  begin
    if w and (str[r] = ' ') and (str[r + 1] = ' ') then
    begin
      Result[c] := #$9;
      inc(r, 2);
      while str[r] = ' ' do
        inc(r);
    end
    else
    begin
      Result[c] := str[r];
      w := str[r] <> ' ';
      inc(r);
    end;
    inc(c);
  end;
  SetLength(Result, r - 1);
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  S: string;
begin
  S := RepSpToTabs(Edit1.Text);
  Edit2.Text := StringReplace(S, #9, '#9', [rfReplaceAll]);
end;


Отлаживайся. Я могу набрать строку, в которой в начале несколько пробелов - результат получается более чем занимательный.
29 сен 17, 21:23    [20832622]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
schi
Member

Откуда: Москва
Сообщений: 2218
Няшик,

Все оптимизаторы одинаковые, выкладывают портянку нечитаемого и косячного кода за портянкой, обливая всех дерьмом попутно.
29 сен 17, 21:26    [20832628]     Ответить | Цитировать Сообщить модератору
 Re: Форматирование текста  [new]
Няшик
Member

Откуда: Екатеринбург
Сообщений: 724
schi,

Я не понимаю, что мне отлаживать???.... Автору надо заменить более двух пробелов, после слова


Картинка с другого сайта.
29 сен 17, 21:40    [20832642]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Delphi Ответить