![]() |
AW: Zahlenkombinationen generieren
Code:
Ich hab nun diesen Code benutzt, allerdings spuckt er am Ende immer eine Fehlermeldung aus:
procedure TForm_Main.Generator;
var stellen, max, i, j, k : Integer; pos : Array of Integer; s : String; begin stellen := 3; max:= 15; SetLength(pos, stellen); k := StrToInt(FloatToStr(power(stellen,max))); for i:= 0 To stellen-1 do pos[i]:=1; for i:= 1 to k do begin s:=''; Inc(pos[0]); for j:=0 To stellen -1 do if pos[j]=max+1 then begin pos[j]:=1; Inc(pos[j+1]); end; for j:=0 To stellen-1 do s:=s+IntToStr(pos[j]); Memo_Output.Lines.Add(s); end; end; Exception der Klasse "EInvalidPointer", "ungültige Zeigeroperation" ![]() Ich hab einiges versucht, aber irgendwie komme ich nicht weiter, hat wer noch eine Idee? mfg |
AW: Zahlenkombinationen generieren
Hast Du einmal die Bereichsprüfung aktiviert? Mir kommt diese Stelle nicht ganz koscher vor:
Zitat:
|
AW: Zahlenkombinationen generieren
Hey,
Ich habe das Programm mal laufen gelassen. Zitat:
Mfg Coffeecoder |
AW: Zahlenkombinationen generieren
Genau das meinte ich, man kann schlecht auf einen Nachfolger zugreifen, der gar nicht existiert. Zumindest eine Abfrage, ob j kleiner als High(Pos) ist gehört da noch vorgeschaltet.
|
AW: Zahlenkombinationen generieren
Man muss nicht unbedingt prüfen, man muss nur Fehlerfrei programmieren:oops:
Da ich das glaub ich ursprünglich verbrochen habe: for j:=0 To stellen -1 do muss einfach nur for j:=0 To stellen -2 do heißen, da pos[stellen-1] natürlich das letzte Element des Array ist und pos[j+1] daher für j=stellen-1 nie funktionieren kann. Das nachher alles bei 151515 endet, muss man über die äußere Schleife steuern, kann also sein das bei k := StrToInt(FloatToStr(power(stellen,max))); nochwas abgezogen werden muss, oder mit max-1 gerechnet werden muss. Hab das damals ja ohne Delphi ins Forum getippt. |
AW: Zahlenkombinationen generieren
Zitat:
|
AW: Zahlenkombinationen generieren
Code:
Ich hab nun eine Abfrage hinzugefügt, allerdings sind nun alle "doppelzahlen" (22,33) immer 11 :/
procedure TForm_Main.Generator;
var stellen, max, i, j, k : Integer; pos : Array of Integer; s : String; begin stellen := 2; max:= 3; SetLength(pos, stellen); k := StrToInt(FloatToStr(power(max, stellen))); for i:= 0 To stellen-1 do pos[i]:=1; for i:= 1 to k do begin s:=''; Inc(pos[0]); for j:=0 To stellen -1 do if pos[j]=max+1 then begin pos[j]:=1; if high(pos) < pos[j+1] then Inc(pos[j+1]); end; for j:=0 To stellen-1 do s:=s+IntToStr(pos[j]); Memo_Output.Lines.Add(s); end; end; |
AW: Zahlenkombinationen generieren
Delphi-Quellcode:
Für das funktionale Problem fehlt mir im Moment die Zeit, den Code logisch nachzuvollziehen.
if j < high(pos) then
Inc(pos[j+1]); |
AW: Zahlenkombinationen generieren
Super, Danke das war schon, nun funktioniert es :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:46 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