Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi meine StrCharCount geht nich... (https://www.delphipraxis.net/103992-meine-strcharcount-geht-nich.html)

a3rosol 25. Nov 2007 20:37


meine StrCharCount geht nich...
 
hiho
hab mir ne StrCharCount fkt gebaut die die anzahl eines bestimmten zeichens in einem strinhg augeben soll
Delphi-Quellcode:

var
  Form1: TForm1;
     var wort,z: string; s,l:integer;
implementation

{$R *.DFM}

[b]function StrCharCount(wort: string; z: string): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(wort) do
    if wort[I] = z then
      Inc(Result);
end;
aber anscheinend gibt sie mir keinen wert zurück -.-
wo ist der fehler?

eine weitere frage: wo kann ich meine globalen variablen EINMAl definieren? mich ödet es an immer wort:= edit1.text; zu schreiben...

danke schonmal für eure hilfe

mkinzler 25. Nov 2007 20:41

Re: meine StrCharCount geht nich...
 
Ich würde auf die globalen Variablen verzichten und bei Bedarf lokale verwenden. Was ich auch beim result machen würde.

a3rosol 25. Nov 2007 20:49

Re: meine StrCharCount geht nich...
 
danke für deine meinung, aber aus gründen der faulheit ziehe ich es vor mit globals zu arbeiten :wink:
hat jemand schon ne lösung?

thkerkmann 25. Nov 2007 20:53

Re: meine StrCharCount geht nich...
 
Hi,

Delphi-Quellcode:
function StrCharCount(wort: string; z: string): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(wort) do
    if wort[I] = z then
      Inc(Result);
end;
Du vergleichst hier einen Char wert (wort[i]) mit einem string (z).
Wie soll denn da was richtiges rauskommen?

Du musst den String in einzelne Worte zerlegen und dann mit deinem gesuchten Wort vergleichen.
Dann köntest Du Erfolg haben.

Du suchst doch wort in string oder ?

Gruss

grenzgaenger 25. Nov 2007 20:54

Re: meine StrCharCount geht nich...
 
jetzt sag mal, was willste denn hier überhaupt machen...

Delphi-Quellcode:
[b]function StrCharCount(wort: string; z: string): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(wort) do
    if wort[I] = z then
      Inc(Result);
end;[/b]
ich komm da irgendwie nicht drauss... was das soll ... :gruebel: :gruebel: :gruebel:

himitsu 25. Nov 2007 20:55

Re: meine StrCharCount geht nich...
 
Sicher daß du nur EIN Zeichen an z übergibst?


versuch's besser mal mit einem Char für Z, da kannst du dann nur einen Char übergeben und es sollte gehn
Delphi-Quellcode:
function StrCharCount(wort: string; c: char): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(wort) do
    if wort[I] = c then
      Inc(Result);
end;

Nuclear-Ping 25. Nov 2007 20:56

Re: meine StrCharCount geht nich...
 
Zitat:

Zitat von a3rosol
danke für deine meinung, aber aus gründen der faulheit ziehe ich es vor mit globals zu arbeiten Wink
hat jemand schon ne lösung?

Dann solltest du vlt. lieber mit Basic arbeiten? :gruebel:

Delphi ist "Objekt Pascal" und globale Variablen widersprechen dem Konzept von "objekt orientierter Programmierung". Sie sollten nur verwendet werden, wenn es nicht anders geht.

a3rosol 25. Nov 2007 21:01

Re: meine StrCharCount geht nich...
 
wie wandel ich einen string in ein char um?
ja ich bin mir sicher dass ich nur ein zeichen suchen will

mkinzler 25. Nov 2007 21:03

Re: meine StrCharCount geht nich...
 
Delphi-Quellcode:
z:= edit4.Text[1];

a3rosol 25. Nov 2007 21:10

Re: meine StrCharCount geht nich...
 
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
z:= edit4.Text[1];

du meine güte...sooo einfach? :shock:
vielen lieben dank! auch für die tips mit den globals
aber ist das denn nich immer zu aufwändig immer die gleiche variable zu deklarieren?

für die nachwelt die funktion:
Delphi-Quellcode:
function StrCharCount(wort: string; C: Char): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(wort) do
    if wort[I] = C then
      Inc(Result);
end;
und die procedure
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var c:char;
begin
      c:= edit4.text[1];
      edit5.Text:=IntToStr(StrCharCount(wort,c));
end;

grenzgaenger 25. Nov 2007 21:11

Re: meine StrCharCount geht nich...
 
Zitat:

Zitat von Nuclear-Ping
Delphi ist "Objekt Pascal" und globale Variablen widersprechen dem Konzept von "objekt orientierter Programmierung". Sie sollten nur verwendet werden, wenn es nicht anders geht.

nicht nur dem objekt der objektorientierten programmierung ... sondern globale variablen sollten normal komplett vermieden werden... und sind nur bei wenigen ausnahmen zulässig... die angesprochene faulheit, ist jedenfalls kein grund dafür .. ;-)

hab mal kurz was runtergeschrieben...

Delphi-Quellcode:
function CountWords(Line: pChar; Word: string): integer;
var
 i: integer;
begin
 result := 0;
 for i := 0 to length(line) - length(word) do
 begin
  if pos(word, line) = 1 then
   inc(result);
  inc(line);
 end;
end;
denke, dafür braucht man keine globalen variablen... ;-) zwar nicht besonders performant, aber der kollege braucht ja auch noch was zu tun... ;-)

grenzgaenger 25. Nov 2007 21:14

Re: meine StrCharCount geht nich...
 
Zitat:

Zitat von a3rosol
Zitat:

Zitat von mkinzler
Delphi-Quellcode:
z:= edit4.Text[1];

du meine güte...sooo einfach? :shock:
vielen lieben dank! auch für die tips mit den globals
aber ist das denn nich immer zu aufwändig immer die gleiche variable zu deklarieren?

für die nachwelt die funktion:
Delphi-Quellcode:
function StrCharCount(wort: string; C: Char): Integer;
var
  I: Integer;
begin
  Result := 0;
  for I := 1 to Length(wort) do
    if wort[I] = C then
      Inc(Result);
end;
und die procedure
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var c:char;
begin
      c:= edit4.text[1];
      edit5.Text:=IntToStr(StrCharCount(wort,c));
end;

weshalb willste das deklarieren...??? geht do so viel einfacher... :-)

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
begin
      edit5.Text:=IntToStr(StrCharCount(wort, edit4.text[1]));
end;

a3rosol 25. Nov 2007 21:16

Re: meine StrCharCount geht nich...
 
also: wenn ich gut und sicher programmieren will, sollte ich keine globals benutzen auch wenns umständlicher ist?

ja das ist wirklich einfacher^^
mensch, ich muss noch ne menge lernen :-)

grenzgaenger 25. Nov 2007 21:24

Re: meine StrCharCount geht nich...
 
Zitat:

Zitat von a3rosol
also: wenn ich gut und sicher programmieren will, sollte ich keine globals benutzen auch wenns umständlicher ist?

ja das ist wirklich einfacher^^
mensch, ich muss noch ne menge lernen :-)

was ist denn da umständlicher?? hier mal die routine zum zeichen zählen:

Delphi-Quellcode:
function CountChar(Line: pChar; aChar: char): integer;
begin
  result := 0;
  while boolean(Line[0]) do
  begin
    if Line[0] = aChar then inc(result);
    inc(line)
  end;
end;
aufruf einfach über
Delphi-Quellcode:
CountChar('abcabc', 'a')
wenn du auf globale variablen verzichtet, dann weisst auch immer auf welche daten du zugreifst...und sparst dir noch stunden an debuggen ein ... ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:14 Uhr.

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