Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren. (https://www.delphipraxis.net/169357-%5Bdcc-fehler%5D-zu-viele-lokale-konstanten-verwenden-sie-kuerzere-prozeduren.html)

XPLOSIV 14. Jul 2012 11:37

Delphi-Version: XE2

[DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Hallo, habe heut mein D7 Projekt in XE2 geöffnet und habe beim unveränderten Quellcode beim Kompilieren folgenden Fehler bekommen:
[DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.

Der Code der den fehler verursacht lautet
Delphi-Quellcode:
if (Form14.ComboBox1.Text = 'Amulette') and (TrackBar1.Position= 0 ) then Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Items/Amulette/0.jpg');
if (Form14.ComboBox1.Text = 'Amulette') and (TrackBar1.Position= 1 ) then Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Items/Amulette/1.jpg');
if (Form14.ComboBox1.Text = 'Amulette') and (TrackBar1.Position= 2 ) then Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Items/Amulette/2.jpg');
-das geht 5000 Zeilen so weiter-

Nun ist die Frage wie ich den Code kleiner kriege oder anders den Fehler umgehe?
Bin für jede Hilfe dankbar.

haentschman 14. Jul 2012 11:44

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Hallo...
Zitat:

-das geht 5000 Zeilen so weiter-
:shock: wow...
Vorschlag:
Delphi-Quellcode:
if (Form14.ComboBox1.Text = 'Amulette') then  
  Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) +
                             'Items/Amulette/' + 
                             IntToStr(TrackBar1.Position) + 
                             '.jpg');
if (Form14.ComboBox1.Text = 'Blubb') then  
  Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) +
                             'Items/Blubb/' + 
                             IntToStr(TrackBar1.Position) + 
                             '.jpg');

XPLOSIV 14. Jul 2012 11:59

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Hmm.. so weiss mein Programm aber nicht auf welcher Position die Trackbar ist um das entsprechende Bild anzuzeigen.
Und der Code ist damit sogar länger.

sx2008 14. Jul 2012 12:10

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Zitat:

Zitat von XPLOSIV (Beitrag 1174671)
Und der Code ist damit sogar länger.

Häää?
8 Zeilen sind länger als 5000 Zeilen?

haentschman 14. Jul 2012 12:22

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Wieviele verschiedene ComboBox Einträge ?
Wieviele TrackBar Positionen ?
Zitat:

Hmm.. so weiss mein Programm aber nicht auf welcher Position die Trackbar ist um das entsprechende Bild anzuzeigen
...schau dir mal den ersten Block (nicht den mit Blubb) an. Nimm mal jede Zeile auseinander und schreibe dahinter was passiert. Der Blubb Block war als Hinweis gedacht, weil ich davon ausgehe, daß mehrere ComboBox Einträge vorhanden sind.

jaenicke 14. Jul 2012 12:25

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Wenn die Verzeichnisse immer genauso heißen wie der Text in der Combobox, geht es noch einfacher für alle:
Delphi-Quellcode:
  Image1.Picture.LoadFromFile(Format('%sItems\%s\%d.jpg',
    [ExtractFilePath(ParamStr(0)), Form14.ComboBox1.Text, TrackBar1.Position]);
Sprich immer das Hauptverzeichnis der Exe, das Unterverzeichnis aus der Combobox und den Dateinamen aus der Trackbar, dazu noch .jpg als Dateierweiterung.

DeddyH 14. Jul 2012 12:25

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Da es vermutlich nicht viel Sinn macht, den Text in der ComboBox eingeben zu lassen, würde ich die Einträge zur Designtime festlegen und den Style auf csDropDownlist stellen, dann kann man schön über den ItemIndex gehen.
Delphi-Quellcode:
var
  BasePath, SubPath: string;
begin
  BasePath := ExtractFilePath(ParamStr(0)) + 'Items\';
  case ComboBox1.ItemIndex of
    0:
      SubPath := 'Amulette';
    1:
      SubPath := 'Schwerter';
    2:
      SubPath := 'Keuschheitsgürtel';
    else
      raise Exception.Create('Nichts ausgewählt');
  end;
  BasePath := IncludeTrailingPathDelimiter(BasePath + SubPath);
  Image1.Picture.LoadFromFile(Format('%s%d.jpg', [BasePath, TrackBar1.Position]));
end;

haentschman 14. Jul 2012 12:29

AW: [DCC Fehler] Zu viele lokale Konstanten. Verwenden Sie kürzere Prozeduren.
 
Warum immer gleich den TE mit verschiedenen Varianten verwirren. Ist es nicht besser daß er erst mal seinen Code versteht bzw. was daran falsch war ? Verbessern geht dann immer noch. So läuft es auf C&P hinaus und er hat nix gewonnen... :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 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