AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Variablen Massenhaft definieren

Ein Thema von Kegasetu · begonnen am 20. Okt 2020 · letzter Beitrag vom 22. Okt 2020
Antwort Antwort
Seite 1 von 3  1 23   
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#1

Variablen Massenhaft definieren

  Alt 20. Okt 2020, 10:58
Hallo Zusammen.

Bitte keinen großen Schrecken bekommen, aber ich habe etwas vor, was so manch einer als total unsinnig beschreiben würde.

Ich habe folgendne Code:
Delphi-Quellcode:
var mmb11, lb11, ew11, zg111, zg211, zg311, zg411, zg511, pz111, pz211, pz311, pz411, pz511, spv111, spv211, spv311, spv411, spv511, spb111, spb211, spb311, spb411, spb511 :integer;
var bz111, bz211, bz311, bz411, bz511 : string;

if ((ComboBox1.ItemIndex = 0) and (ComboBox2.ItemIndex = 0)) then
  begin
  mmb11 := strtoint(edit1.Text);
  lb11 := strtoint(edit2.Text);
  ew11 := strtoint(edit3.Text);
  bz111 := edit4.Text;
  bz211 := edit5.Text;
  bz311 := edit6.Text;
  bz411 := edit7.Text;
  bz511 := edit8.Text;
  zg111 := strtoint(edit9.Text);
  zg211 := strtoint(edit10.Text);
  zg311 := strtoint(edit11.Text);
  zg411 := strtoint(edit12.Text);
  zg511 := strtoint(edit13.Text);
  pz111 := strtoint(edit14.Text);
  pz211 := strtoint(edit15.Text);
  pz311 := strtoint(edit16.Text);
  pz411 := strtoint(edit17.Text);
  pz511 := strtoint(edit18.Text);
  spv111 := strtoint(edit19.Text);
  spv211 := strtoint(edit20.Text);
  spv311 := strtoint(edit21.Text);
  spv411 := strtoint(edit22.Text);
  spv511 := strtoint(edit23.Text);
  spb111 := strtoint(edit24.Text);
  spb211 := strtoint(edit25.Text);
  spb311 := strtoint(edit26.Text);
  spb411 := strtoint(edit27.Text);
  spb511 := strtoint(edit28.Text);
  end;
Nun mein Problem, ich brauche das mit jeweils anderen Endziffern 40 mal (also z.B. mmb12; mmb13..mb410). Ich wollte erst ein paar Arrays füllen, aber mein Problem ist, das Programm wird sehr unübersichtlich werden und anhand der Bezeichnungen kann ich mich strukturieter durcharbeiten.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:03
Hallo,
spb511 ist also für dich übersichtlich und verständlich.

Dann lass es doch so.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:07
Mit Arrays wird es eher übersichtlicher finde ich anstelle dutzende variablen zu nutzen.
Da sollte man ja wissen welches Array für was zuständig ist.
Oder ein Array aus Arrays etc...
Helfen könnte es wenn Du beschreibst was Du eigentlich vorhast, so kommen viele Ideen zur besseren Umsetzung zustande.
(Records, Klassen, Arrays etc...)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:12
... und ein paar Infos zu den eigenen Vorkenntnissen bezüglich Programmierung und Delphi ...
(und zur genutzten Delphi-Version)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#5

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:16
Es soll ein Programm für eine statische Simulation werden. Die Formeln aufzustellen ist für mich kein Problem, aber an der Informatik hapert es. Also so ganz übersichtlich ist es nicht, das gebe ich gerne zu.
Auch den Arrays bin ich nicht unaufgeschlossen. Ich müsste nur ständig eine Liste parat haben, an der ich ablesen kann, welche Stelle für was steht.

Jedoch habe ich auch ein ganz anderes Problem, ich würde das ganze gerne automatisch Speichern, nur bin ich mir nicht sicher wie ich das machen soll. Mein Ansatz dafür lautet wie folgt:

Delphi-Quellcode:
var b1a1: array[1..28] of integer;
begin
for i := 0 to 28 do
b1a1[i] := strtoint(edit[i].Text);

end;
Zwischenzeitlich würde ich auch Probleme mit Strings bekommen, aber das würde ich lösen, indem ich die Edit1-Felder ans Ende setzte und ein neues Array öffne.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#6

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:21
... und ein paar Infos zu den eigenen Vorkenntnissen bezüglich Programmierung und Delphi ...
(und zur genutzten Delphi-Version)
Also ich würde sagen Anfänger. Früher war ich mal besser, aber mittlerweile ist vieles weg. Ich bleibe aber bei diesen Basic Zeug, viel komplizierter wird es nicht.
Ich nutze Delphi 10.3
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:31
Ich würde eine TStringList anstelle lauter Edit-Felder nutzen, dann kannst Du auch easy durchiterieren.
Wenn Dein Array[1..28] lautet auch bei 1 anfangen und nicht bei 0.

Also, Editfelder ein OnChange zuweisen um den Inhalt in die StringList zu pressen, irgendwann später deine for i := 1 to 28 Sache durchführen.

//Edit
Oder generell alles in eine Klasse verfrachten, das erscheint mir am sinnvollsten.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:42
Also grundsätzlich gibt es viele Möglichkeiten ... je nachdem, welche Konzepte man einsetzen möchte.

Ich würde mal denken, Klassen und Generics sind hier auszuschließen.

Die Daten also entweder in einfache Variablen, wie Du es angedeutet hast, oder in Arrays. Du musst einfach sehen, was für Dich praktikabler ist.

Wichtig wäre, Formular und Logik zu trennen.
Man könnte als Schnittstelle zwei Funktionen definieren:

DatenInFormularSchreiben und DatenAusFormularHolen.
Dort realisierst Du das, was Du im Eingangspost gemacht hast.
Nur die zwei Funktionen sollten die Controls und die Variablen benutzen.
Dann brauchst Du noch eine Funktion BerechneDaten, die z.B. von einem Button angestoßen wird.

Dort sollten alle Berechnungen ablaufen, ohne noch einmal auf ein Edit oder anderes Control zuzugreifen.

In DatenAusFormularHolen kannst Du zwar so etwas wie FindControl('Edit1') benutzen, aber es wird einfacher sein, wenn Du es wie im Eingangspost machst und direkt Edit1.Text benutzt.
Allerdings würde ich den Controls immer sprechende Namen zuordnen, also z.B. zg111 := StrToInt(Edit_zg111.Text);
Das vereinfacht schon mal einiges und vor allem die Wartung und Fehlersuche.

Soweit vielleicht erst mal als Richtungsempfehlung...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#9

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:50
Also grundsätzlich gibt es viele Möglichkeiten ... je nachdem, welche Konzepte man einsetzen möchte.

Ich würde mal denken, Klassen und Generics sind hier auszuschließen.

Die Daten also entweder in einfache Variablen, wie Du es angedeutet hast, oder in Arrays. Du musst einfach sehen, was für Dich praktikabler ist.

Wichtig wäre, Formular und Logik zu trennen.
Man könnte als Schnittstelle zwei Funktionen definieren:

DatenInFormularSchreiben und DatenAusFormularHolen.
Dort realisierst Du das, was Du im Eingangspost gemacht hast.
Nur die zwei Funktionen sollten die Controls und die Variablen benutzen.
Dann brauchst Du noch eine Funktion BerechneDaten, die z.B. von einem Button angestoßen wird.

Dort sollten alle Berechnungen ablaufen, ohne noch einmal auf ein Edit oder anderes Control zuzugreifen.

In DatenAusFormularHolen kannst Du zwar so etwas wie FindControl('Edit1') benutzen, aber es wird einfacher sein, wenn Du es wie im Eingangspost machst und direkt Edit1.Text benutzt.
Allerdings würde ich den Controls immer sprechende Namen zuordnen, also z.B. zg111 := StrToInt(Edit_zg111.Text);
Das vereinfacht schon mal einiges und vor allem die Wartung und Fehlersuche.

Soweit vielleicht erst mal als Richtungsempfehlung...
Klassen? Um Himmels Willen, bloß nicht

So sieht das Programm aus, vielleicht wird es dann etwas klarer, was ich machen will (Bild im Anhang).

Es sollen erstmal ein paar Informationen eingegeben werden und dann gespeichert. Durch den Button "Auswählen" sollen die Informationen dann wieder in den Edit-Feldern erscheinen.

Ich frage mal ganz frech. Gibt es dafür eventuell einen vorgefertigten Code? Eigentlich ist es ja relativ simpel.
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#10

AW: Variablen Massenhaft definieren

  Alt 20. Okt 2020, 11:51
[QUOTE=KodeZwerg;1475798]Ich würde eine TStringList anstelle lauter Edit-Felder nutzen, dann kannst Du auch easy durchiterieren.
Wenn Dein Array[1..28] lautet auch bei 1 anfangen und nicht bei 0.

Also, Editfelder ein OnChange zuweisen um den Inhalt in die StringList zu pressen, irgendwann später deine for i := 1 to 28 Sache durchführen.

Das Problem mit dem StringGrid ist die Übersichtlichkeit für den Anwender. Die Werte müssen räumlich getrennt zu betrachten sein.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15: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