Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #31  
Старый 01.08.2008, 11:38
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
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  
Старый 01.08.2008, 11:44
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Код:
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  
Старый 01.08.2008, 12:03
MSD MSD вне форума
Прохожий
 
Регистрация: 29.03.2008
Сообщения: 35
Репутация: 10
По умолчанию

Цитата:
Сообщение от The Shadow
Код:
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;
Это только номер рейса. Со стоимостью сейчас сделаю.
он мне выдает только номер рейса, а чеков с верху нет.... , что то не так.ъ
И во втором получается тоже самое.....
Мне нужно чтобы получилось в первом....

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

Ммм... последнюю строчку посмотрите
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #35  
Старый 01.08.2008, 12:18
MSD MSD вне форума
Прохожий
 
Регистрация: 29.03.2008
Сообщения: 35
Репутация: 10
Подмигивание

, слушай ну правда получается что тольно номера рейсов выводит..... А чеков с верху нет. Ладно щас посижу подумаю...) Спасибо. И еще подскажи как убрать из файла повторяющиеся строки длинна которых не более 3 символов..
Ответить с цитированием
  #36  
Старый 01.08.2008, 12:19
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

http://delphisources.ru/forum/showpo...3&postcount=32
содается два файла - num.txt и price.txt
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #37  
Старый 01.08.2008, 12:28
MSD MSD вне форума
Прохожий
 
Регистрация: 29.03.2008
Сообщения: 35
Репутация: 10
По умолчанию

Да эти два файла создаются но, num.txt содержит только номера рейсов, а prise получается все правильно.......
Ответить с цитированием
  #38  
Старый 01.08.2008, 12:35
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

а как надо было то?
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #39  
Старый 01.08.2008, 12:41
MSD MSD вне форума
Прохожий
 
Регистрация: 29.03.2008
Сообщения: 35
Репутация: 10
Радость ка надо..

А результатом хочу чтобы получилось следующее в одном файле допустим "Номер рейса.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  
Старый 01.08.2008, 12:51
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Щас попробую, вроде бы понял...
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #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. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #42  
Старый 01.08.2008, 15:35
MSD MSD вне форума
Прохожий
 
Регистрация: 29.03.2008
Сообщения: 35
Репутация: 10
По умолчанию

Все отлично спасибо, но еще один момент. Почему то не могу получить доступ к файлу для дальнейшей обработки..... Может CloseFile не до конца что то закрывает?
Ответить с цитированием
  #43  
Старый 01.08.2008, 15:49
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Странно, вроде бы все закрывается...
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #44  
Старый 01.08.2008, 15:58
MSD MSD вне форума
Прохожий
 
Регистрация: 29.03.2008
Сообщения: 35
Репутация: 10
Хорошо

Все разобрался спасибо моя вина....., иногда просто начинаешь смотреть и разбираться что к чему.... а элементарных ошибок не видишь... Спсибо еше раз.
Ответить с цитированием
  #45  
Старый 01.08.2008, 16:01
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

=) Пожалуйста
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:04.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter