|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#31
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); function CopyFromTo(S: String; C: Char; BeginPos, EndPos: Integer): 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; begin Result:=Copy(S, NumPos(S, C, BeginPos) + 1, NumPos(S, ',', EndPos) - NumPos(S, ',', BeginPos) - 1); end; var TmpStr: String; begin AssignFile(Input, 'f.txt'); Reset(Input); AssignFile(Output, 'result.txt'); Rewrite(Output); while not Eof(Input) do begin Readln(Input, TmpStr); Writeln(Output, CopyFromTo(TmpStr, ',', 2, 3)); end; CloseFile(Input); CloseFile(Output); end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#32
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); 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; var TmpStr: String; 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); Writeln(Output, CopyFromTo(TmpStr, ',', 2, 3)); Writeln(ErrOutput, Copy(TmpStr, Pos('№', TmpStr) + 1, NumPos(TmpStr, ',', 7) - Pos('№', TmpStr) - 1)); Writeln(ErrOutput, Copy(TmpStr, Pos(': ', TmpStr) + 2, NumPos(TmpStr, ',', 9) - Pos(': ', TmpStr) - 2)); end; CloseFile(Input); CloseFile(Output); CloseFile(ErrOutput); end; Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. Последний раз редактировалось The Shadow, 01.08.2008 в 13:01. |
#33
|
|||
|
|||
Цитата:
И во втором получается тоже самое..... Мне нужно чтобы получилось в первом.... Последний раз редактировалось MSD, 01.08.2008 в 12:08. |
#34
|
||||
|
||||
Ммм... последнюю строчку посмотрите
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#35
|
|||
|
|||
, слушай ну правда получается что тольно номера рейсов выводит..... А чеков с верху нет. Ладно щас посижу подумаю...) Спасибо. И еще подскажи как убрать из файла повторяющиеся строки длинна которых не более 3 символов..
|
#36
|
||||
|
||||
http://delphisources.ru/forum/showpo...3&postcount=32
содается два файла - num.txt и price.txt Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#37
|
|||
|
|||
Да эти два файла создаются но, num.txt содержит только номера рейсов, а prise получается все правильно.......
|
#38
|
||||
|
||||
а как надо было то?
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#39
|
|||
|
|||
ка надо..
А результатом хочу чтобы получилось следующее в одном файле допустим "Номер рейса.txt":
12 525545545, 525548585, 15 562214, 18 562564, 19, 562564, т.е. идет номер чека номер рейса... и.т.д. Если в одном чеке два рейса как в строке 1 и 2 файла Билет.txt тогда номерчека чтобы не повторялся а посто писались номера рейса для этого чека. И в другом файле чтобы получилось следующее в одном файле допустим "Стоимость рейса.txt": 12 4525.50 4000.50 15 2000.50 18 3000.50 19 3000.50 т.е. идет Номер чека Стоимость ... и.т.д. Да.... ставить задачу я не совсем умею извини... |
#40
|
||||
|
||||
Щас попробую, вроде бы понял...
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#41
|
||||
|
||||
Вот, но здесь уже без стоимости рейса
Код:
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. Если вы программист - делать вид, что так было задумано. |
#42
|
|||
|
|||
Все отлично спасибо, но еще один момент. Почему то не могу получить доступ к файлу для дальнейшей обработки..... Может CloseFile не до конца что то закрывает?
|
#43
|
||||
|
||||
Странно, вроде бы все закрывается...
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |
#44
|
|||
|
|||
Все разобрался спасибо моя вина....., иногда просто начинаешь смотреть и разбираться что к чему.... а элементарных ошибок не видишь... Спсибо еше раз.
|
#45
|
||||
|
||||
=) Пожалуйста
Что делать, когда сломался комп: 1. Если вы юзер - делать ноги. 2. Если ремонтник - делать деньги. 3. Если вы программист - делать вид, что так было задумано. |