AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RightStr() macht mehr Ärger als geplant

Ein Thema von Headshot037 · begonnen am 4. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
Headshot037

Registriert seit: 31. Jan 2009
Ort: Thüringen
6 Beiträge
 
#1

RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:21
Hallo!

Mal wieder eine dieser Ich-lerne-Delphi-in-der-Schule-Fragen , sorry erstmal dafür, doch ich interessiere mich sehr dafür aber mein Lehrer ist einfach nicht in der Lage, mir zu helfen o_O

Am besten erstmal den Code. Ich will Primzahlen berechnen (bitte erschlagt mich nicht wegen der GoTo-Anweisung, die kenn ich aus C++ und hab das mal probiert... bzw es probiert, es zu probieren -,- )

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
label GotoAnfang;
begin
g:=StrToInt(Edit1.Text);
h:=StrToInt(Edit2.Text);
Label1.Caption:='';
   // ToDo: maximal durch hälfte teilen, da anschließend immer Rest vorhanden
    // halb:=(h/2);
    // halb2:=(round(halb));


    GotoAnfang: //Anfangspunkt
    for a:=g to h do

      begin //jetzt alle Zahlen rauswerfen, die mit 0,2,4,5,6,8 enden, da sowieso keine Primzahlen
      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 goto GotoAnfang;
        for b:=1 to h do
          begin
            x:=a mod b;
            if x=0 then y:=y+1
          end;
        if y=2 then Label1.caption:=label1.caption+chr(13)+IntToStr(a);
    y:=0 ;
    b:=0 ;
      end;

end;
Dazu sagt der Compiler:
[Fehler] Unit1.pas(48): Es gibt keine überladene Version von 'RightStr', die man mit diesen Argumenten aufrufen kann



und in den Uses (keine Ahnung, ob das richtig ist)
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  function RightStr(const AText: AnsiString; const ACount: Integer): AnsiString; overload;
  function RightStr(const AText: WideString; const ACount: Integer): WideString; overload;
Der Compiler sagt mir in Zeile 8 bei den Uses:
[Fehler] Unit1.pas(8): Ungenügende Forward- oder External-Deklaration: 'RightStr'


Ehrlich gesagt: Ich versteh kein Wort und brauche eure Hilfe!

MfG
Headshot037
Delphi is geil ^^ Wenn mans kann =,(
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#2

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:25
Hallo erstmal,

Versuch mal dein Glück, mit folgendem Link..

Primzahlen berechnen
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:27
Btw. das solltest du dir nochmal überlegen:

label GotoAnfang;
Markus Kinzler
  Mit Zitat antworten Zitat
Headshot037

Registriert seit: 31. Jan 2009
Ort: Thüringen
6 Beiträge
 
#4

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:29
naja mir war es wichtig, den code selbst erarbeitet zu haben.
Ich weiß dass meine Methode nciht sehr effizient ist.
Es gibt noch mehrere andere Lösungen, und ich weiß, dass diese auch schneller arbeiten.
Aber das ist ja eigentlich nicht die Frage, sondern wie ich das mit RightStr hinbekomme, das braucht man ja nicht nur bei diesem Programm.


mkinzler: Was ist daran falsch? Bitte um Hilfe =)

MfG
Headshot037
Delphi is geil ^^ Wenn mans kann =,(
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:30
Zitat:
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
da gehören noch ein paar Klammern rein

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 bzw: (hab hier keine Bereichsprüfung für den Zeichenindex eingebaut, da ich weiß daß hier mindestens ein Zeichen vorhanden ist ... also in dieser Button1Click-Prozedur ... sonst bitte aufpassen)

if g[Length(g)] in ['2', '4', '5', '6', '8', '0'] then
$2B or not $2B
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:34
Zitat:
mkinzler: Was ist daran falsch? Bitte um Hilfe =)
Ein Grund, warum Herr Wirth Pascal erfunden hat, war das goto. Es gibt einfach viel bessere (strukturierte) Alternativen
Markus Kinzler
  Mit Zitat antworten Zitat
Headshot037

Registriert seit: 31. Jan 2009
Ort: Thüringen
6 Beiträge
 
#7

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:44
hab mal das mit dem kürzeren Code getestet:

[Fehler] Unit1.pas(49): Inkompatible Typen

Also g ist Integer, weiß nicht, obs damit zusammen hängen kann...

und die Fehler
[Fehler] Unit1.pas(8): Ungenügende Forward- oder External-Deklaration: 'RightStr'
treten auch noch auf =(

aber danke erstmal für die schnelle hilfe!
Delphi is geil ^^ Wenn mans kann =,(
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:49
Der erste Parameter ist aber ein String-Typ
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#9

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 21:56
Hi,

um zu prüfen, ob eine Zahl gerade oder ungerade ist, gibt es die Funktionen Odd(i) bzw. Even(i),
wobei i natürlich ein integer ist.

Das sollte dir weiterhelfen.

Zahlenvergleiche durch Stringverarbeitung sind weder elegant noch performant.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: RightStr() macht mehr Ärger als geplant

  Alt 4. Mär 2009, 22:05
Haaalt, der eine Fehler ist hier erstmal:
Zitat von Headshot037:
und in den Uses (keine Ahnung, ob das richtig ist)
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
  function RightStr(const AText: AnsiString; const ACount: Integer): AnsiString; overload;
  function RightStr(const AText: WideString; const ACount: Integer): WideString; overload;
Der Compiler sagt mir in Zeile 8 bei den Uses:
[Fehler] Unit1.pas(8): Ungenügende Forward- oder External-Deklaration: 'RightStr'
In die uses Liste gehören Unitnamen rein. Du siehst das doch eigentlich am vorhandenen Quelltext...

In diesem Fall muss StrUtils dazu:
Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, StrUtils;
Denn in der Unit StrUtils ist RightStr deklariert wie in der Hilfe steht.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:10 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