Текущий архив: 2008.05.18;
Скачать: CL | DM;
Вниз
Поиск по множеству из мемо Найти похожие ветки
← →
Oyeme (2008-04-17 15:45) [0]Всем прет...
В чём моя ошибка...
зАдание у меня такое.. дАн текствоой файл сколько в нем строк не содержащих гласных букв.
Делаю..простое пытаюсь найти в фали (хотябы цыфры...-для начала) а он не ищет и выдёт ещё ошибку..
зарание спасибо за помощь.
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-17 15:50) [1]Нумерация строк начинается с
0
Сколькож этих чукч уже :-(
← →
Oyeme (2008-04-17 15:53) [2]знаю...я так сдлеал для себя...он и первую строку не ищет
← →
Palladin © (2008-04-17 15:54) [3]
> StrToInt(memo1.lines[c])
ты вот тут чем занимаешься, объясни.
← →
Сергей М. © (2008-04-17 15:55) [4]
> первую строку не ищет
Где в твоем коде хоть что-либо напоминающее поиск и подсчет строк, не содержащих гласных букв ?
← →
Плохиш © (2008-04-17 15:56) [5]
> Palladin © (17.04.08 15:54) [3]
Я туда даже читать не стал, побоялся...
← →
Oyeme (2008-04-17 15:59) [6]да я уже запарился ...не получаться сделать...
я стоков всего перепробовал..
если пишу так то
if memo1.lines[c] in [1..4] then
ShowMessage("na6ol")
else ShowMessage("nety");
пишет не совместимость со сстрокой и интегер
← →
Palladin © (2008-04-17 16:01) [7]
> if memo1.lines[c] in [1..4] then
ты по человечески скажи, чего ты тут делаешь то такое космическое... мой, простой человеческий, разум не в состоянии объять всю волшебность данного набора символов...
← →
Плохиш © (2008-04-17 16:02) [8]
> Oyeme (17.04.08 15:59) [6]
Может стоит всё-таки книжку какую по основам прочитать? А то так и будешь кнопки бездумно топтать...
← →
Johnmen © (2008-04-17 16:02) [9]он пробует различные комбинации буковок, пока не получится...
← →
Oyeme (2008-04-17 16:07) [10])) из файла прочитать текст и начти в нём гласные буквы..))
я для начало читаю сколько всего строк потом идёт цикл по строке и каждый символ проверяет ..
я не брал гласные... (просто для себя взял цифры..)) пуская хоть найдёт цифры в строке.
← →
Anatoly Podgoretsky © (2008-04-17 16:09) [11]> Johnmen (17.04.2008 16:02:09) [9]
Или придет ковбой который не умеет читать.
← →
Palladin © (2008-04-17 16:10) [12]lines[c] это ты обращаешься к строчке в memo, что бы обратится еще и к буковке в этой строчке нужно еще один индекс дописать
← →
Плохиш © (2008-04-17 16:10) [13]
> потом идёт цикл по строке и каждый символ проверяет
Можно привести место из кода, которое подтвердит это высказывание? Т.к. в [0] этого нет.
← →
Плохиш © (2008-04-17 16:12) [14]
> Palladin © (17.04.08 16:10) [12]
"Такие красивые намёки" (c) котёнок Гав :-)
← →
Sairex © (2008-04-18 17:16) [15]Такс как искать буквы (цифры, все равно одно и тоже)
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) [16]за метлой
← →
Sairex © (2008-04-18 17:18) [17]Такс как искать буквы (цифры, все равно одно и тоже)
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;
← →
Sairex © (2008-04-18 17:19) [18]Ой сори за флуд прокся глюкнула
← →
Sairex © (2008-04-18 17:20) [19]
> Palladin © (18.04.08 17:17) [16]
> за метлой
В смысле?
← →
Плохиш © (2008-04-18 17:20) [20]за метлой
← →
Царев Евгений © (2008-04-18 21:23) [21]
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 21:51) [22]
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;
Страницы: 1 вся ветка
Текущий архив: 2008.05.18;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.023 c