Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кол-во букв, подсчет кол-во букв в файле 
:(
    Опции темы
Naposaram
  Дата 10.3.2009, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.11.2008

Репутация: нет
Всего: нет



Помогите плиз мне, чайнику, в делфи плохо шарю.
Задача: написать программу которая в открываемом файле подсчитывает кол-во русских и английских букв и выводит: 
"а-3
б-0
в-5
....
x-3
y-4
z-0 "

поиском пользовался нашел подобную тему но как я понял там для Pascal а мне для  Delphi7  smile 
PM MAIL   Вверх
Poseidon
Дата 10.3.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Помочь? Давай! Что уже сделал? Что не получается? Или ты хочешь что бы тебе сделали? Тогда go в "Центр помощи".


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
morpheyushka
Дата 10.3.2009, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зеленый человек
**


Профиль
Группа: Участник
Сообщений: 563
Регистрация: 26.2.2008
Где: Киев

Репутация: 2
Всего: 8



Цитата(Naposaram @  10.3.2009,  17:07 Найти цитируемый пост)
там для Pascal а мне для  Delphi7

так в чем проблема...там по идеи только WriteLn() на Memo1.Lines.Add() нужно заменить.

Давай то что есть, попробуем подправить, подсказать, а если хочешь что бы все за тебя сделали, тогда топай в Центр помощи!

Добавлено через 35 секунд
ой...немного не не успел с ответом smile 


--------------------
user posted image
Спасибо делается вот так!!!
PM MAIL WWW   Вверх
MetalFan
Дата 10.3.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Цитата(morpheyushka @  10.3.2009,  17:30 Найти цитируемый пост)
WriteLn() на Memo1.Lines.Add()

а если консольное приложение, то и менять не надо)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Naposaram
  Дата 10.3.2009, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.11.2008

Репутация: нет
Всего: нет




Цитата

Помочь? Давай! Что уже сделал? Что не получается? Или ты хочешь что бы тебе сделали? Тогда go в "Центр помощи".




Цитата

так в чем проблема...там по идеи только WriteLn() на Memo1.Lines.Add() нужно заменить.

Давай то что есть, попробуем подправить, подсказать, а если хочешь что бы все за тебя сделали, тогда топай в Центр помощи!



в том то и дело что ни чего не сделал. Знаю что надо открыть файл, считать в переменную,потом каждую букву сравнивать с символами в файле, а вот как записать это все правильно незнаю  smile 


PM MAIL   Вверх
Christoph
Дата 10.3.2009, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  RusianCharL=['à'..'ÿ'];
  RusianCharB=['À'..'ß'];
  EnglishCharL=['a'..'z'];
  EnglishCharB=['A'..'Z'];
  RusianCharLU= RusianCharL+RusianCharB+EnglishCharL+EnglishCharB;
var
  Buffer: PChar;
  Stream: TFileStream;
  Size,i: LongInt;
  Letters:array[32..255] of integer;
begin
  ZeroMemory(@Letters,SizeOf(Letters));
  Stream := TFileStream.Create('D:\1.txt', fmOpenRead);
  try
   Size := Stream.Size;
   GetMem(Buffer, Size);
     try
       Stream.Read(Buffer[0], Size);
       i:=0 ;
       while Buffer[i]<> #0 do
         begin
            inc(Letters[Ord(Buffer[i])]);
           inc(i);
         end;
         Memo1.Lines.BeginUpdate;
        for i:=Low(Letters) to High(Letters) do
          if Chr(i)in RusianCharLU then
           Memo1.Lines.Add(Chr(i)+'-'+IntToStr(Letters[i]));
           Memo1.Lines.EndUpdate;
     finally
       FreeMem(Buffer);
      end;
  finally
    Stream.Free;
  end;
end;



end.




--------------------
user posted image
PM MAIL ICQ   Вверх
Naposaram
Дата 10.3.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.11.2008

Репутация: нет
Всего: нет



Сделал вот так, понимаю что это бред, но работает жаль только неправильно:

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Memo1: TMemo;
    Button2: TButton;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
 var FName: string;
     s: string;
   i, j, c: Integer;
   q: set of char;
begin
 OpenDialog1.Execute;
 if OpenDialog1.Execute then
 begin
  FName := OpenDialog1.FileName;
  Memo1.Lines.LoadFromFile(FName);
 end;
  q := [];

  for i:= 1 to Length(FName) do
  begin
    c:=0;
    for j:= 1 to Length(FName) do
    begin
      if UpCase(FName[i]) = UpCase(FName[j]) then
         if UpCase(FName[i]) in q then break
         else Inc(c);
    end;
    q := q + [UpCase(FName[i])];
    if c <> 0 then
       Memo1.Lines.Add(FName[i]+'-'+IntToStr(C));
  end;
end;



end.






В файле записанно: "ыаваываывааывыавпп"
а выводит:"G-1
:-1
\-4
Т-1
е-1
х-1
н-1
а-1
р-1
ь-1
И-1
Б-1
3-1
1-1
.-1
t-2
x-1"     smile  smile  smile  smile  smile

Добавлено через 7 минут и 45 секунд
Christoph спасибо работает, вот только в мемо там все в столбик, можно как нибудь сделать что бы было в несколько столбиков а то кроме английских букв ничего не влазиет
PM MAIL   Вверх
Christoph
Дата 10.3.2009, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: 5
Всего: 11



В Инспекторе Объектов найди свойство ScrollBars и выставь ssVertical, так что все там влизает  smile 


--------------------
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.