Autor Beitrag
Financeflash
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 16:40 
Ich habe folgendes Problem:
Ich habe 2 Editfelder in die Ich einen Namen und eine Zahl hineinschreiben will.
nach der Klick der "procedure btnnachsterClick(Sender: TObject);" soll der Inhalt der 2 Editfelder in einem Array oder TString gespeichert werden, damit ich mit den Werten weiterrechnen kann.
Die Editfelder sollen gelöscht werden und das gleiche soll noch mal geschehen, bis die ganzen Gesellschafter durch sind.
Komme echt nicht weiter.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
unit Uohg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    edGesellschafter: TEdit;
    btnBestaetigen: TButton;
    lbName: TLabel;
    edName: TEdit;
    lbKapital: TLabel;
    edKapital: TEdit;
    lbAufforderung: TLabel;
    btnnachster: TButton;
    procedure btnBestaetigenClick(Sender: TObject);
    procedure btnnachsterClick(Sender: TObject);
   
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
   procedure Name_speichern(Name:integer);
    procedure Kapital_speichern;
   end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

var SVn:array[1..20of integer;
    SVk:array[1..20of integer;


procedure TForm1.btnBestaetigenClick(Sender: TObject);
var a:integer;
begin
a:=StrToInt(edGesellschafter.Text);
  if a <= 20
  then
    begin
      edKapital.Visible:=true;
      edName.Visible:=true;
      lbAufforderung.Visible:=true;
      lbName.Visible:=true;
      lbKapital.Visible:=true;
      btnnachster.Visible:=true;
    end
  else
    begin
      ShowMessage('Maximale Anzahl der Gesellschafter überschritten!');
    end;
end;


procedure TForm1.btnnachsterClick(Sender: TObject);
var count:integer;
begin
  for count:=1 to StrToInt(edGesellschafter.Text) do
    begin
      Name_speichern(name);
      Kapital_speichern;
    end;

showmessage('Auswerttung wird durchgeführt. Bitte warten...');

end;


procedure TForm1.Name_speichern(Name: integer);
var hilf:word;
begin
  //trägt Kanidatenstimmen ein und summiert Gesamtstimmen
  Name:=edName.Text;
  hilf:=SVn[Name];
  SVn[Name]:=hilf+1;         //Kandidatenstimmen
  hilf:=SVn[20];
  SVn[20]:=hilf+1;                //Gesamtstimmen
end;

procedure TForm1.Kapital_speichern(Kapital: integer);
var hilf:word;
begin
  //trägt Kanidatenstimmen ein und summiert Gesamtstimmen
  Kapital:=StrToInt(edKapital.Text);
  hilf:=SVk[Kapital];
  SVk[kapital]:=hilf+1;         //Kandidatenstimmen
  hilf:=SVk[20];
  SVk[20]:=hilf+1;                //Gesamtstimmen
end;
end.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 16:51 
Warum steht denn Kapital im Index des Arrays?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 16:53 
Ich sehe selbst bei den Proceduren nicht mehr durch und benötige DDRINGEND Hilfe.
Bitte...
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 17:06 
1. Warum eine eigene Procedure zum Speichern der Daten?
2. So Speicherst du nix in dein Array
3. Was heist denn "und das gleiche soll noch mal geschehen, bis die ganzen Gesellschafter durch sind."?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 17:12 
ich will den Namen in Editfeld eingeben, dann klicke ich auf den Button. Mit dem Klick wird die Eingabe (der Name) gespeichert und der editfeld Inhalt gelöscht, damit ich den nächsten Namen einschreiben kann. Nach dem ich den zweiten Namen eingeschrieben habe klicke ich wieder auf den Button, der Name wird gespeichert, der editfeld Inhalt gelöscht
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 17:14 
Das ist die komplette Aufgabe:

Für eine Offene Handelsgesellschaft (OHG) sollen Sie die Gewinnverteilung am Jahresende berechnen. Im Handelsgesetzbuch wird dazu die Rechenvorschrift in etwa so gefordert:

Jeder Gesellschafter (Eigentümer) bekommt zunächst sein eingebrachtes Kapital mit 4% pro Jahr verzinst. Diese Summe wird vom Gesamtgewinn abgezogen. Bleibt nach der Kapitalverzinsung für alle Gesellschafter ein Rest, so wird dieser durch die Anzahl der Gesellschafter geteilt. Jeder Gesellschafter erhält also die Kapitalverzinsung und seinen Anteil am Rest als Gewinnanteil ausgezahlt. Das Programm soll leisten:

Eingabe der Anzahl der Gesellschafter (max.20 mit Prüfung der Anzahl) und des Gesamtgewinns. Berechnung des Gewinnanteils für alle Gesellschafter einzeln. Ausgabe in einer Tabelle für alle Gesellschafter.

Die Datenhaltung soll in einem Feld erfolgen.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 17:16 
Mal ein Beispiel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  mainForm: TmainForm;
  counter : integer;    // Zählt Speichervorgänge
  daten : array [1..25of integer;    // Dein Array

procedure TmainForm.Button1Click(Sender: TObject);
begin
  Inc(counter);  // Erhöht den counter um 1
  if counter <= High(daten) then   // Prüft ob die maximale Menge erreicht ist
  begin
    daten[counter] := StrToInt(edBeispiel.Text);  // Speichert Eingaben in aktuelle Arrayposition
    edBeispiel.Clear;
    edBeispiel.SetFocus;
  end;
end;

procedure TmainForm.FormCreate(Sender: TObject);
begin
  counter := 0;
end;

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.


Zuletzt bearbeitet von Dude566 am Do 04.02.10 17:34, insgesamt 1-mal bearbeitet
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Do 04.02.10 17:30 
Hey,

das geht aber schief. Mal angenommen die Länge des Array ist 20 und der Counter steht auf 20. Dann führt gleift er auf daten[20] zu und das gibts nich! also entweder if counter < Length(daten) then ODER if counter <= Length(daten)-1 then ODER if counter <= High(daten) then ;)

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 17:32 
Oh mist fängt ja bei Null an. :oops:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 17:34 
aber ich benötige ja 2 Arrays
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 17:37 
Das ganze ist ein Beispiel! :mahn:

Wenn du es dir nicht selber anpassen bzw. erweitern willst dann erstell bitte in der Job Börse einen Topic, dann macht es dir vielleicht jemand.

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 04.02.10 17:37 
user profile iconDude566 hat folgendes geschrieben Zum zitierten Posting springen:
Oh mist fängt ja bei Null an. :oops:

Bei Deinem Beispiel nicht! Daher ist nun hier zufällig High() = Length().
ausblenden Delphi-Quelltext
1:
daten : array [1..25of integer;    // Dein Array					

Dynamische Arrays werden jedoch beginnend mit 0 indiziert.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 17:40 
Also wars doch richtig! Ich bin total durcheinander von der Schule. :nut: :rofl:

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 18:13 
Bei mir funktioniert alles wunderbar, außer, dass die linke Seite nicht zugewiesen werden kann:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
unit Uohg;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    edGesellschafter: TEdit;
    btnBestaetigen: TButton;
    lbName: TLabel;
    edName: TEdit;
    lbKapital: TLabel;
    edKapital: TEdit;
    lbAufforderung: TLabel;
    btnnachster: TButton;
    btnAuswertung: TButton;
    procedure btnnachsterClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
   
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
   end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
  count : integer;    // Zählt Speichervorgänge
  name : array [1..20of string;    // namen array
  kapital : array [1..20of single;  //kapital array


procedure TForm1.FormCreate(Sender: TObject);
begin
  count := 0;
end;



procedure TForm1.btnnachsterClick(Sender: TObject);
var count:integer;
begin
  Inc(count);  // Erhöht den counter um 1
    if count <= StrToInt(edGesellschafter.Text)-1 then   // Prüft ob die maximale Menge erreicht ist
      begin
        name[count] :=edName.Text;  // Speichert Eingaben in aktuelle Arrayposition
        edName.Clear;
        edName.SetFocus;
      end
    else
showmessage('bla bla bla');

end;



end.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 18:55 
was meinst du denn mit linker Seite?

Und steht in edGesellschafter.Text etwa die maximale Zahl der Datensätze, oder warum fragst du dort ob der counter den Wert nicht überschreitet?

Achja und warum deklarierst du count einmal global und dann beim Button Click wieder lokal?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Do 04.02.10 20:24 
[Fehler] Uohg.pas(54): Der linken Seite kann nichts zugewiesen werden.
Dude566
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1592
Erhaltene Danke: 79

W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
BeitragVerfasst: Do 04.02.10 22:38 
Ja dann schau dir die Zeile an und du wirst sehen das es die ist welche ich im vorigen Post in Frage gestellt habe.
Du schaust dort ob der counter bereits bei der Zahl angekommen ist die du in edGesellschafter.Text eingegeben hast.
Ist das so beabsichtigt?

_________________
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 05.02.10 14:46 
Schuldigung, das Problem ist in Zeile 56.
[Fehler] Uohg.pas(56): Der linken Seite kann nichts zugewiesen werden.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Fr 05.02.10 14:53 
Nenn das Array anders
Name ist auch eine Eigenschaft vom Formular.

_________________
PROGRAMMER: A device for converting coffee into software.
Financeflash Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Fr 05.02.10 15:03 
Ok Vielen Dank.
Mein nächstes Problem ist, dass ich nach meiner Zählerschleife den Button ausblenden will und so (siehe Quelltest) funktioniert es schonmal nicht:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.btnnachsterClick(Sender: TObject);
begin
    for count:=1 to StrToInt(edGesellschafter.Text) do   // Prüft ob die maximale Menge erreicht ist
      begin

        namen[count]:=edName.Text;  // Speichert Eingaben in aktuelle Arrayposition
        edName.Clear;
        edName.SetFocus;

      end;
     btnnachster.Visible:=false;
end;