Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RightStr() macht mehr Ärger als geplant (https://www.delphipraxis.net/130186-rightstr-macht-mehr-aerger-als-geplant.html)

Jens Hartmann 4. Mär 2009 21:09

Re: RightStr() macht mehr Ärger als geplant
 
Hier wäre auch eine Möglichkeit Primzahlen zu berechnen.

Delphi-Quellcode:
function isPrim(zahl: Integer): boolean;
var
  i: Integer;
begin
  result := true;
  if zahl = 1 then
    begin
      result := false;
      exit;
    end;
  for i := 2 to zahl div 2 do
    begin
      if zahl mod i = 0 then
        begin
          result := false;
          exit;
        end;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  x, y, i: Integer;
begin
  x := StrToInt(Edx.Text);
  y := StrToInt(Edy.Text);
  for i := x to y do
    begin
      if isPrim(i) then
        begin
          Memo1.Lines.Add(IntToStr(i));
        end;
    end;
end;

Headshot037 4. Mär 2009 21:13

Re: RightStr() macht mehr Ärger als geplant
 
Danke für die viele Hilfe!


jaenicke: danke^^ ich idiot!^^
kannst du mir folgendes erklären:

[Fehler] Unit1.pas(47): Es gibt keine überladene Version von 'RightStr', die man mit diesen Argumenten aufrufen kann
:wiejetzt:
MfG
Headshot037

alzaimar 4. Mär 2009 21:15

Re: RightStr() macht mehr Ärger als geplant
 
Zitat:

Zitat von jaenicke
Haaalt, der eine Fehler ist hier erstmal

Danke jaenicke. Ich wollte den Thread schon wegen Am-Thema-Vorbei-Reden anprangern :zwinker:

himitsu 4. Mär 2009 21:25

Re: RightStr() macht mehr Ärger als geplant
 
OK, wenn "g" ein Integer ist (PS: warum hast du die Variablendeklaration nicht lokal in der Prozedur drin?)

Zitat:

Delphi-Quellcode:
if RightStr(g,1)=2 or RightStr(g,1)=4 or RightStr(g,1)=5 or RightStr(g,1)=6 or RightStr(g,1)=8 or RightStr(g,1)=0 then

aber dann fehlen so oder so Klammen :roll:

Delphi-Quellcode:
if ((g mod 10)=2) or ((g mod 10)=4) or ((g mod 10)=5) or ((g mod 10)=6) or ((g mod 10)=8) or ((g mod 10)=0) then
bzw: (keinen Bereichsprüfung drin ... grund steht schonmal weiter oben)
Delphi-Quellcode:
if (g mod 10) in [2, 4, 5, 6, 8, 0] then
> Delphi-Referenz durchsuchenmod

Headshot037 4. Mär 2009 21:29

Re: RightStr() macht mehr Ärger als geplant
 
aaaaaah danke danke danke du hast mich gerettet =)
Bekommst auch nen Platz in den Credits =D

Warum ich die Variablendeklaration am Anfang schreibe und nicht in der Prozedur? Nun ja, ich habs so gelernt. Woher sollte ich es auch besser wissen =D Ein Schüler kann eben nur so gut sein, wie sein Meister. Aber ich denke ich habe hier die Community als neuen Meister gefunden =)

Ab sofort werde ich das natürlich in der Procedure schreiben ;)

Danke nochmal!
:zwinker:

himitsu 4. Mär 2009 22:07

Re: RightStr() macht mehr Ärger als geplant
 
Variablen immer so nah wie möglich an ihrem Verwendungsord definieren.

Das merkst du eigentlich schon bei den Schleifenvariablen für For-Do-Schleifchen, denn diese müssen dord deklariert werden, wo sie benötigt werden, oder hat der Compiler nicht bei "a" gemeckert?
Zitat:

[DCC Warnung] Unit1.pas(40): W1019 FOR-Schleifenvariable muss eine einfache lokale Variable sein
Hat erstmal einen sehr großen Vorteil, es kann nicht passieren, daß du mal ausversehn eine Variable mehrfach verwendets.
(und globale Variablen werden eh ungern gesehn)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.
Seite 2 von 2     12   

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