![]() |
RightStr() macht mehr Ärger als geplant
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:
Dazu sagt der Compiler:
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; [Fehler] Unit1.pas(48): Es gibt keine überladene Version von 'RightStr', die man mit diesen Argumenten aufrufen kann :wiejetzt: und in den Uses (keine Ahnung, ob das richtig ist)
Delphi-Quellcode:
Der Compiler sagt mir in Zeile 8 bei den Uses:
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; [Fehler] Unit1.pas(8): Ungenügende Forward- oder External-Deklaration: 'RightStr' :wall: Ehrlich gesagt: Ich versteh kein Wort und brauche eure Hilfe! MfG Headshot037 :dance: |
Re: RightStr() macht mehr Ärger als geplant
|
Re: RightStr() macht mehr Ärger als geplant
Btw. das solltest du dir nochmal überlegen:
Delphi-Quellcode:
label GotoAnfang;
|
Re: RightStr() macht mehr Ärger als geplant
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 |
Re: RightStr() macht mehr Ärger als geplant
Zitat:
Delphi-Quellcode:
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 (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
Delphi-Quellcode:
if g[Length(g)] in ['2', '4', '5', '6', '8', '0'] then
|
Re: RightStr() macht mehr Ärger als geplant
Zitat:
|
Re: RightStr() macht mehr Ärger als geplant
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! |
Re: RightStr() macht mehr Ärger als geplant
Der erste Parameter ist aber ein String-Typ
|
Re: RightStr() macht mehr Ärger als geplant
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 |
Re: RightStr() macht mehr Ärger als geplant
Haaalt, der eine Fehler ist hier erstmal:
Zitat:
In diesem Fall muss StrUtils dazu:
Delphi-Quellcode:
Denn in der Unit StrUtils ist RightStr deklariert wie in der Hilfe steht.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, StrUtils; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz