Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск по множеству из мемо [D6, WinXP]


Страницы:   1 2

Oyeme ©   (2008-04-17 15:45:00) 

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

Делаю..простое пытаюсь найти в фали (хотябы цыфры...-для начала) а он не ищет и выдёт ещё ошибку..

зарание спасибо за помощь.

var
e,i,c,: integer;
F: Textfile;

begin
 AssignFile(F,'a.txt');
 Reset(F);
 memo1.lines.LoadFromFile('a.txt');
  E := Memo1.Lines.Count; // vsego liniij v memo
  For i:=1  to e do  begin
    for c:=1 to length(memo1.lines[i])  do
                    if StrToInt(memo1.lines[c]) in [1..4] then
                      ShowMessage('na6ol')
                                       else  ShowMessage('nety');
                end;

     CloseFile(F);


Оригинал   (2008-04-18 21:51:00) [1]

function CountBukov(const FileName: String): Integer;
var
 L: TStringList;
 i,j: Integer;
begin
 L := TStringList.Create;
 try
   L.LoadFromFile(FIleName);
   Result := 0;
   for I := 0 to L.Count - 1 do
   begin
     for j :=1 to Length(L[i]) do
     begin
       if AnsiUpperCase(L[i])[j] in ['E','Y','U','I','O','A','Е','Ы','А','О','Э','Я','И','Ю'] then
       begin
         Inc(Result);
         break;
       end;
     end;
   end;
   Result := L.Count-Result;
 finally
   L.Free;
 end;
end;


Царев Евгений   (2008-04-18 21:23:00) [2]


var
 Form1: TForm1;

implementation

{$R *.dfm}

type TCharSet = set of Char;

 TTextFileInfo = packed record
 _Assigned: Boolean;
 LineCount : Integer;        // Всего линий в файле
 ValidCharCount : Integer;   // Всего нужных символов
 OtherCharCount  : Integer;  // Всего ненежных символов
 IllegalLineCount: Integer;  // Всего ненужных строк
 ValidLineCount: Integer;    // Всего нужных линий
end;

const
FindCharGl = ['А','а','Е','е','Ё','ё','И','и','О','о',
            'У','у','Ы','ы','Э','э','Ю','ю','Я','я']; // гласные
FindCharSg = ['Б','б','В','в','Г','г','Д','д','Ж','ж','З','з','Й','й','К','к','Л','л','М','м' ,'Н','н','П','п',
            'Р','р','С','с','Т','т','Ф','ф','Х','х','Ц','ц','Ч','ч','Ш','ш','Щ','щ','Ъ','ъ', 'Ь','ь']; // согласные
FindCharDt = ['0'..'9']; // цыфры

function GetTextFileInfo(Filename: String; AStrings : TStrings; CharSet: TCharSet): TTextFileInfo;
var
I,J: Integer;
IsIllegalLine: Boolean;
begin
 if not FileExists(Filename) then
  begin
   ShowMessageFmt('File %s not found',[Filename]);
   Result._Assigned:= False;
   Exit;
  end;
with Result, AStrings do
 begin
 Clear;
 LoadFromFile(Filename);
 _Assigned:= True;
 LineCount:= Count;
 ValidCharCount := 0;
 OtherCharCount := 0;
 IllegalLineCount := 0;
 ValidLineCount := 0;
  for I := 0 to Count - 1 do
      begin
       IsIllegalLine := True;
       for J :=1 to Length(Strings[I]) do
        begin
         if Strings[I][J] in CharSet then
           begin
            if IsIllegalLine then Inc(ValidLineCount);
            IsIllegalLine := False;
            Inc(ValidCharCount);
           end
           else
            Inc(OtherCharCount);
        end; //for J:=1
        if IsIllegalLine then Inc(IllegalLineCount);
      end; //for I:= 0
   end // with
end;

procedure TForm1.Button1Click(Sender: TObject);
var
TFI: TTextFileInfo;
begin
// Учет на согласные
TFI:= GetTextFileInfo('test.txt',Memo1.Lines,FindCharSg);
 if TFI._Assigned then
 begin
   with TFI do
   ShowMessageFmt('Всего линий в файле %d'#13#10 +
                  'Найдено соответсвующих символов %d'#13#10 +
                  'Найдено соответсвующих линий %d'#13#10 +
                  'Не соответствующих символов %d'#13#10 +
                  'Не соответствующих линий %d',
                  [LineCount, ValidCharCount, ValidLineCount, OtherCharCount, IllegalLineCount]);
   end;
 end;


Плохиш   (2008-04-18 17:20:00) [3]

за метлой


Sairex   (2008-04-18 17:20:00) [4]


> Palladin ©   (18.04.08 17:17) [16]
> за метлой

В смысле?


Sairex   (2008-04-18 17:19:00) [5]

Ой сори за флуд прокся глюкнула


Sairex   (2008-04-18 17:18:00) [6]

Такс как искать буквы (цифры, все равно одно и тоже)

procedure TF1.Button1Click(Sender: TObject);
Var  I:Integer;
begin
F1.memo1.lines.LoadFromFile('a.txt');
 For i:=0  to F1.Memo1.Lines.Count-1 do
   begin
     if Pos('1',F1.memo1.Lines.strings[i])>0 then ShowMessage('Yo!')
     else ShowMessage('Oh no!');
   end;
end;


Palladin   (2008-04-18 17:17:00) [7]

за метлой


Sairex   (2008-04-18 17:16:00) [8]

Такс как искать буквы (цифры, все равно одно и тоже)

procedure TF1.Button1Click(Sender: TObject);
Var  I:Integer;
begin
F1.memo1.lines.LoadFromFile('a.txt');
 For i:=0  to F1.Memo1.Lines.Count-1 do
   begin
     if Pos('1',F1.memo1.Lines.strings[i])>0 then ShowMessage('Yo!')
     else ShowMessage('Oh no!');
   end;
end;


Плохиш   (2008-04-17 16:12:00) [9]


> Palladin ©   (17.04.08 16:10) [12]

"Такие красивые намёки" (c) котёнок Гав :-)


Palladin   (2008-04-17 16:10:00) [10]

lines[c] это ты обращаешься к строчке в memo, что бы обратится еще и к буковке в этой строчке нужно еще один индекс дописать


Плохиш   (2008-04-17 16:10:00) [11]


> потом идёт цикл по строке и каждый символ проверяет

Можно привести место из кода, которое подтвердит это высказывание? Т.к. в [0] этого нет.


Anatoly Podgoretsky   (2008-04-17 16:09:00) [12]

> Johnmen  (17.04.2008 16:02:09)  [9]

Или придет ковбой который не умеет читать.


Oyeme   (2008-04-17 16:07:00) [13]

)) из файла прочитать текст и начти в нём  гласные буквы..))

я для начало читаю сколько всего строк потом идёт цикл по строке и каждый символ проверяет ..
я не брал гласные... (просто для себя взял цифры..)) пуская хоть найдёт цифры в строке.


Johnmen   (2008-04-17 16:02:00) [14]

он пробует различные комбинации буковок, пока не получится...


Плохиш   (2008-04-17 16:02:00) [15]


> Oyeme   (17.04.08 15:59) [6]

Может стоит всё-таки книжку какую по основам прочитать? А то так и будешь кнопки бездумно топтать...


Palladin   (2008-04-17 16:01:00) [16]


> if memo1.lines[c] in [1..4] then

ты по человечески скажи, чего ты тут делаешь то такое космическое... мой, простой человеческий, разум не в состоянии объять всю волшебность данного набора символов...


Oyeme   (2008-04-17 15:59:00) [17]

да я уже запарился ...не получаться сделать...
я стоков всего перепробовал..

если пишу так то

if memo1.lines[c] in [1..4] then
                     ShowMessage('na6ol')
                                      else  ShowMessage('nety');

пишет не совместимость со сстрокой и интегер


Плохиш   (2008-04-17 15:56:00) [18]


> Palladin ©   (17.04.08 15:54) [3]

Я туда даже читать не стал, побоялся...


Сергей М.   (2008-04-17 15:55:00) [19]


> первую строку не ищет


Где в твоем коде хоть что-либо напоминающее поиск и подсчет строк, не содержащих гласных букв?


Palladin   (2008-04-17 15:54:00) [20]


>  StrToInt(memo1.lines[c])

ты вот тут чем занимаешься, объясни.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо