![]() |
Saubere Programmierung?
Hallo,
ich wollte fragen, ob vieleicht jemand eine saubere Programmierung hierfür weiß:
Delphi-Quellcode:
usw. in 96- Schritten bis 8000
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var K:integer; Begin case x of 0..96: Begin for K:=0 To 96 Do Test1[k]:=Test[k]; 97..192: Begin for K:=97 To 192 Do Test1[k]:=Test[k]; Ich möchte halt die Werte aus dem Test array in der sich die 8000 Werte befinden immer in 96 Werte aufteilen und dem Test1 array zuweisen.So wie es ist funktioniert auch alles wunderbar, aber ich möchte nicht einen so langen Quelltext haben nur damit ich anhand der mousemovefunktion Werte zuweise.Vieleicht hat jemand eine Idee wie man das eleganter lösen kann. [edit=SirThornberry]code-Tags durch Delphi-Tags ersetzt - nächstes mal bitte selbst richtig setzen - Mfg, SirThornberry[/edit] |
Re: Saubere Programmierung?
Delphi beherrscht auch das Multiplizieren von Zahlen.
Delphi-Quellcode:
Du weist aber schon, dass 0..96 insgesamt 97 Werte sind?
for K := X * 96 to Min(7999, X * 96 + 95) do
Test1[K] := Test[K]; |
Re: Saubere Programmierung?
Delphi-Quellcode:
oder kurz:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var K:integer; Begin for k := 0 to 96 do Test1[k] := Test[x mod 97]; end;
Delphi-Quellcode:
Grundsätzlich war bei deinem geposteten Code kein Case notwendig, da du eh immer das gleiche gemacht hast. Da hättest du auch gleich eine Schleife nehmen können. Ich habe deine Aussage nun so interpretiert, dass Test1[] immer von 0..96 geht und Test[] die 8000 Werte enthält. Wenn das aber falsch ist und Test1[] und Test[] jeweils 8000 Werte enthalten und du immer nur die 97 Werte kopiert haben willst, dann so:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var K:integer; Begin Test1[k] := Copy(Test, x mod 97, 97); end;
Delphi-Quellcode:
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); Var K, lBase:integer; Begin lBase := x div 97; for k := 0 to 96 do Test1[lBase + k] := Test[lBase + k]; end; |
Re: Saubere Programmierung?
Zitat:
Zitat:
Zitat:
|
Re: Saubere Programmierung?
Danke für die Tipps,
aber bleibt bei euren Lösungen nicht die mousemovefunktion ausser Betracht?Ich möchte halt wenn ich mit der maus in dem Pixelbereich von 0..95 komme auch die Werte von 0..95 aus dem Testarray dem Test1array zuweisen.Wenn ich in den Pixelbereich von 96..191 komme auch diese Werte zuweisen.Deswegen hatte ich die Caseanweisung.Oder vertue ich mich da jetzt?Bin leider noch nicht so erfahren.Die Werte hatten jetzt noch nicht gestimmt weil ich nur das prinzip verstehen wollte,es sind auch nicht 8000 sondern 7968 Werte.Halt immer 96 Werte sollen von dem einen in den anderen Array zugewiesen werden. |
Re: Saubere Programmierung?
Delphi-Quellcode:
lBase := x div 96;
for k := 0 to 95 do Test1[k] := Test[lBase + k]; end; |
Re: Saubere Programmierung?
Danke muetze1,
Jetzt habe ich es verstanden, und es funktioniert auch.Vielen Dank. |
Re: Saubere Programmierung?
Zu früh gefreut,
er übernimmt immer nur die ersten 96 Werte,auch wenn ich mich mit der maus in den Bereich von 96..191 befinde.Dann sollten ja eigentlich auch die Werte aus dem Testarray von 96..191 übertragen werden.Aber er überträgt immer nur die Werte von 0..95 egal wo ich mit der maus bin :cry: |
Re: Saubere Programmierung?
Delphi-Quellcode:
lBase := 96 * (x div 96);
for k := 0 to 95 do Test1[k] := Test[lBase + k]; end; |
Re: Saubere Programmierung?
Super :thumb:
jetzt funktioniert es wie es soll! Vielen herzlichen Dank,jetzt sieht mein Programm viel besser aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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-2025 by Thomas Breitkreuz