![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#46
|
|||
|
|||
|
Цитата:
//Rewrite(ErrOutput); здесь можно просто вставить код из предыдущего примера и будет работать как один? ![]() |
|
#47
|
||||
|
||||
|
Да, просто я убрал несколько строчек чтобы код не стал еще больше.
|
|
#48
|
|||
|
|||
|
Цитата:
![]() |
|
#49
|
||||
|
||||
|
Код:
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);
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));
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);
CloseFile(ErrOutput);
end; |
|
#50
|
|||
|
|||
|
И еще подскажите пожалуйста как убрать из файла повторяющиеся строки длинна которых не более 3 символов.. Например есть строки
3 54555454 54545454 3 545454 878778 4 545545 5454554 и.т.д нудно чтоб осталось 3 54555454 54545454 545454 878778 4 545545 5454554 Спасибо |
|
#51
|
|||
|
|||
|
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
SList : TStringList;
I, J : Integer;
begin
SList := TStringList.Create;
Try
SList.LoadFromFile(Edit1.Text);
For I := 0 To SList.Count-1 Do
If Lenght(SList[i]) <= 3 Then // Длинна строки <= 3
For J := SList.Count DownTo I + 1 Do
If Slist[i] = SList[J] Then
SList.Delete(J); // Удаляем такие-же, что ниже I
SList.SaveToFile(Edit1.Text);
Finally
SList.Free;
End;
end; |
|
#52
|
|||
|
|||
|
Спасибо. Есть еще один вопрос. Можно организавать чтобы обработка Мemo1.lines..SavetoFile (C:\1.txt) не переписыва файл заново а добавляла записи в конец
? |
|
#53
|
||||
|
||||
|
Код:
procedure AppendFile(Memo: TMemo; FN: String); var i: Integer; f: TextFile; begin AssignFile(f, FN); Append(f); for i:=0 to Memo.Lines.Count - 1 do Writeln(f, Memo.Lines[i]); CloseFile(f); end; |
|
#54
|
|||
|
|||
|
Мне дан текстовый файл с описанием переменной f, количество переменных в файле заранее не известно.
>view f=0784 07/24/08_10:24:22 rty ### view subd start ### # basic information # f=0784 et=8974 sub_typ=analog lcls=indv chrg_cls=ama chrg_an=0 an=0 bnw=com tpad=0.0 rpad=-6.0 rc_org=1 rc_trm=0 chrg_ccls=nctl lctl=nctl st=trmv # service information # sc=clip clip_typ=p //total=1 >view f=3698 07/24/08_09:36:41 rty ### view subd start ### # basic information # f=0047 et=3698 sub_typ=analog lcls=indv chrg_cls=ama chrg_an=0 an=0 bnw=com tpad=0.0 rpad=-6.0 rc_org=1 rc_trm=0 chrg_ccls=nctl lctl=nctl st=trmv //total=1 В общем виде >view f=.... параметры......... //total=1 Нужно в зависимости от параметров f вывести в новый файл инструкции последовательно для каждой переменной содержащие ее значение. В общем виде для первой записи т.к sc=clip Нужно вывести в новый файл can f=0784 sc=clip reg f=0784 st_ope=trmv can f=3698 sc=cw где f=0784 значение функции can sc=clip действия и так для каждой f Пожалуйста, помогите! |
|
#55
|
|||
|
|||
|
Ничего не понял из твоего объяснения
![]() |
|
#56
|
|||
|
|||
|
Здравствуйте мастера. Подсткажите пожалуйста возможно ли скопировать файлы по дате? К примеру на форме есть компонента DateTimePicker и кнопка копировать. Выбираем дату в DateTimePicker, нажимаем копировать и файлы к примеру из папки C:\1\*.cm копируются (при этом у файлов меняется расширение) в папку D:\2\*.txt. Возможно ли это? Спасибо большое за ответы.
|
|
#57
|
|||
|
|||
|
Здравствуйте мастера. Подсткажите пожалуйста возможно ли скопировать файлы по дате? К примеру на форме есть компонента DateTimePicker и кнопка копировать. Выбираем дату в DateTimePicker, нажимаем копировать и файлы к примеру из папки C:\1\*.cm копируются (при этом у файлов меняется расширение) в папку D:\2\*.txt. Возможно ли это? Спасибо большое за ответы.
|
|
#58
|
|||
|
|||
|
Цитата:
Что никто не знает как это сделать?? ![]() |
|
#59
|
|||
|
|||
|
мастера подсткажите пожалуйста это пример заменяет определенные значения на другие, но вот в чем проблема условие может быть только одно..... как сделать 3 и более условий для замены? Спасибо.
Код:
var
sl: TStringList;
begin
sl := TStringList.Create;
if fileexists ('C:\1.txt')then sl.LoadFromFile('C:\1.txt');
for i := 0 to sl.Count - 1 do
sl[i] := StringReplace(sl[i], 'г:', '', [rfReplaceAll]);
sl.SaveToFile('C:\1.txt');
sl.Free;Последний раз редактировалось Admin, 29.04.2009 в 10:34. |