![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск по множеству из мемо [D6, WinXP]
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])
ты вот тут чем занимаешься, объясни.