Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Buchstabenhäufigkeit (https://www.delphipraxis.net/191707-buchstabenhaeufigkeit.html)

p80286 14. Feb 2017 11:45

AW: Buchstabenhäufigkeit
 
Das ist keine Char-Table sondern eine Count-Table. also am Position $31 wir das Vorkommen von "1" gezählt.

Gruß
K-H

Lisa.99 14. Feb 2017 19:19

AW: Buchstabenhäufigkeit
 
Danke für eure schnellen Antworten.
Verstehe leider viele Quelltexte nicht. In der Schule lernen wir nur wenig und es kann passieren, dass ich das erklären muss. Will auch verstehen, wieso ich das so machen muss.
Wie bekomme ich es hin, mein string grid auf null zu setzen?
Bin ein Mädchen :-D

Luckie 14. Feb 2017 19:36

AW: Buchstabenhäufigkeit
 
Dann frag, was du nicht verstehst.

Zu deiner Frage: In dem du 0 in die betreffende Zelle schreibst?

t.roller 14. Feb 2017 20:28

AW: Buchstabenhäufigkeit
 
Zitat:

Zitat von Lisa.99 (Beitrag 1361592)
Wie bekomme ich es hin, mein string grid auf null zu setzen?
Bin ein Mädchen :-D

Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var I: Integer;
begin
  for I := 0 to StringGrid1.RowCount - 1 do
    StringGrid1.Rows[I].Clear();
end;

Lisa.99 15. Feb 2017 14:40

AW: Buchstabenhäufigkeit
 
Danke! Das mit der Prozedur werde ich dann mal versuchen.
Ich muss ja, wenn ich die Prozente der einzelnen Buchstaben berechnen muss eine Schleife nutzen. Das habe ich ja auch in meinem Quelltext schon versucht! Mein Problem ist, dass ich nicht weiß, wie die Schleife direkt auszusehen hat. Das was bei mir grün ist, ist meine versuchte Schleife. Wenn ich diese aber durchlaufe, dann sagt er mir, dass er das nicht berechnen kann. Was ist daran der Fehler?

Luckie 15. Feb 2017 14:42

AW: Buchstabenhäufigkeit
 
Die genaue Fehlermeldung wäre jetzt hilfreich.

Jumpy 15. Feb 2017 14:52

AW: Buchstabenhäufigkeit
 
Wenn's nur um das grüne geht, da zählst du zu weit:

for j1 := 1 to StringGrid1.RowCount-1 do

Lisa.99 15. Feb 2017 14:59

AW: Buchstabenhäufigkeit
 
Dankeschön. Kann es leider erst am Montag wieder ausprobieren. Ich versuche das mal und wenn dann immer noch eine Fehlermeldung kommen sollte, dann werde ich sie euch schreiben. Danke habt mir aber schon sehr geholfen :-D

t.roller 15. Feb 2017 17:16

AW: Buchstabenhäufigkeit
 
Liste der Anhänge anzeigen (Anzahl: 3)
Aus Spass neue Version gemacht:
Delphi-Quellcode:
unit Unit1; //20170213

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.ExtDlgs,
  Winapi.MMSystem, Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Memo11: TMemo;
    OpenTextFileDialog1: TOpenTextFileDialog;
    bnOpenTextfileDialog: TButton;
    bnCLEAR: TButton;
    Edit1: TEdit;
    bnRUN: TButton;
    bnCLOSE: TButton;
    procedure FormCreate(Sender: TObject);
    procedure bnOpenTextfileDialogClick(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
              Rect: TRect; State: TGridDrawState);
    procedure bnCLEARClick(Sender: TObject);
    procedure bnRUNClick(Sender: TObject);
    procedure bnCLOSEClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  cArray = array of ANSIchar;

var
  Form1: TForm1;
  nextLetter : Integer;
  LOT : Integer;
  CA : cArray;

implementation

{$R *.dfm}

function StrToCharArray(s: ANSIstring): cArray;
var x: integer;
begin
  setlength(result,length(s));
  for x:=length(s) downto 1 do result[x-1]:=s[x];
end;

function RemoveChars(const str: string; const ch: ANSIchar): string;
var i, Count: Integer; InvalidChars : set of ANSIChar;
begin
  InvalidChars := [ch, UPCASE(ch)];
  SetLength(Result, Length(str));
  Count := 0;
  for i := 1 to Length(str) do
  if not (str[i] in InvalidChars) then begin inc(Count); Result[Count] := str[i]; end;
  SetLength(Result, Count);
end;
//------------------------------------------------------------------------------
procedure TForm1.bnCLEARClick(Sender: TObject);
var I: Integer;
begin
  for I := 0 to StringGrid1.RowCount - 1 do StringGrid1.Rows[I].Clear();
end;

procedure TForm1.bnCLOSEClick(Sender: TObject); begin Application.Terminate; end;

procedure TForm1.bnRUNClick(Sender: TObject);
var Text3 : String; iResult, iText, I : Integer;
    Ticks: DWord; Res, Proz : Single;
begin
    StringGrid1.Cells[0,0]:= 'Buchstabe';
    StringGrid1.Cells[1,0]:= 'Häufigkeit';
    StringGrid1.Cells[2,0]:= 'Prozent';
Ticks := timeGetTime;

for I := Low(CA) to High(CA) do
BEGIN
  iText:= Length(Memo11.Text);
  inc(nextLetter);
  Text3:= RemoveChars(Memo11.text, CA[I]);
  Application.ProcessMessages;
  iResult := iText - Length(Text3);
  Memo11.text:= Text3;
  StringGrid1.Cells[0,nextLetter]:= CA[I];
  StringGrid1.Cells[1,nextLetter]:= INTTOSTR(iResult);
  Proz:= iResult / (LOT/100);
  StringGrid1.Cells[2,nextLetter]:= Format(' %.3f %',[Proz]);
END;
  Res := 0.001 * (timeGetTime - Ticks);
  Edit1.Text:= Format('Time for creating : '+' %.3f sec',[Res]);
end;

procedure TForm1.bnOpenTextfileDialogClick(Sender: TObject);
begin
  Memo11.Clear; bnCLEAR.Click;
if OpenTextfileDialog1.Execute then
BEGIN
  Memo11.Lines.LoadFromFile(OpenTextfileDialog1.FileName);
  nextLetter:=0;
  Application.ProcessMessages;
  LOT:= Length(Memo11.text);
END;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Height:= Screen.Height-40;
  nextLetter:=0;
  Memo11.Lines.LoadFromFile(ExtractFilePath(Application.ExeName)+'\schtasks.txt');
  Application.ProcessMessages;
  LOT:= Length(Memo11.text);
  CA:= StrToCharArray('enisratdhulcgmobwfkzpvßjyxqäöü0123456789'); //40
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var s: string;
begin
  s := StringGrid1.Cells[ACol, ARow];
  StringGrid1.Canvas.FillRect(Rect);
  DrawText(StringGrid1.Canvas.Handle, PChar(s), Length(s), Rect,
  DT_SINGLELINE or DT_Center or DT_VCENTER);
end;

end.

t.roller 16. Feb 2017 21:55

AW: Buchstabenhäufigkeit
 
Liste der Anhänge anzeigen (Anzahl: 1)
Buchstabenhäufigkeit in ausgewählten Sprachen


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz