Показать сообщение отдельно
  #41  
Старый 01.08.2008, 13:15
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Вот, но здесь уже без стоимости рейса
Код:
procedure TForm1.Button1Click(Sender: TObject);
type
  TStringMatrix = Array of Array of String;
function NumPos(S: String; C: Char; Num: Integer): Integer;
var
  i, CurPos: Integer;
begin
  CurPos:=0;
  Result:=0;
  for i:=1 to Length(S) do
  begin
    if S[i] = C then
    Inc(CurPos);
    if CurPos = Num then
    begin
      Result:=i;
      Break;
    end;
  end;
end;
function CopyFromTo(S: String; C: Char; BeginPos, EndPos: Integer): String;
begin
  Result:=Copy(S, NumPos(S, C, BeginPos) + 1, NumPos(S, ',', EndPos) - NumPos(S, ',', BeginPos) - 1);
end;
function IndexInArray(S: String; Ar: TStringMatrix): Integer;
var
  i: Integer;
begin
  Result:=-1;
  if Length(Ar) = 0 then
  Exit;
  for i:=Low(Ar) to High(Ar) do
  begin
    if Length(Ar[i]) > 0 then
    if Ar[i][0] = S then
    begin
      Result:=i;
      Exit;
    end;
  end;
end;
var
  TmpStr: String;
  Cheks: TStringMatrix;
  i, j: Integer;
begin
  AssignFile(Input, 'f.txt');
  Reset(Input);
  AssignFile(Output, 'num.txt');
  Rewrite(Output);
  //AssignFile(ErrOutput, 'price.txt');
  //Rewrite(ErrOutput);
  while not Eof(Input) do
  begin
    Readln(Input, TmpStr);
    if IndexInArray(Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1), Cheks) > -1 then
    begin
      SetLength(Cheks[IndexInArray(Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1), Cheks)], Length(Cheks[IndexInArray(Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1), Cheks)]) + 1);
      Cheks[IndexInArray(Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1), Cheks)][High(Cheks[IndexInArray(Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1), Cheks)])]:=CopyFromTo(TmpStr, ',', 2, 3);
    end
    else
    begin
      SetLength(Cheks, Length(Cheks) + 1);
      SetLength(Cheks[High(Cheks)], 2);
      Cheks[High(Cheks)][0]:=Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1);
      Cheks[High(Cheks)][1]:=CopyFromTo(TmpStr, ',', 2, 3);
    end;
  end;
  for i:=Low(Cheks) to High(Cheks) do
  begin
    Writeln(Output, Cheks[i][0]);
    for j:=Low(Cheks[i]) + 1 to High(Cheks[i]) do
    Writeln(Output, Cheks[i][j] + ',');
  end;
  CloseFile(Input);
  CloseFile(Output);
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием