| Autor |
Beitrag |
Financeflash
Hält's aus hier
Beiträge: 15
|
Verfasst: 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.
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 public procedure Name_speichern(Name:integer); procedure Kapital_speichern; end;
var Form1: TForm1;
implementation
{$R *.dfm}
var SVn:array[1..20] of integer; SVk:array[1..20] of 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 Name:=edName.Text; hilf:=SVn[Name]; SVn[Name]:=hilf+1; hilf:=SVn[20]; SVn[20]:=hilf+1; end;
procedure TForm1.Kapital_speichern(Kapital: integer); var hilf:word; begin Kapital:=StrToInt(edKapital.Text); hilf:=SVk[Kapital]; SVk[kapital]:=hilf+1; hilf:=SVk[20]; SVk[20]:=hilf+1; end; end. |
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: Do 04.02.10 16:53
Ich sehe selbst bei den Proceduren nicht mehr durch und benötige DDRINGEND Hilfe.
Bitte...
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 04.02.10 17:16
Mal ein Beispiel:
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; daten : array [1..25] of integer; procedure TmainForm.Button1Click(Sender: TObject); begin Inc(counter); if counter <= High(daten) then begin daten[counter] := StrToInt(edBeispiel.Text); 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
      
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)
|
Verfasst: 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
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 04.02.10 17:32
Oh mist fängt ja bei Null an. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Financeflash 
Hält's aus hier
Beiträge: 15
|
Verfasst: Do 04.02.10 17:34
aber ich benötige ja 2 Arrays
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 04.02.10 17:37
Das ganze ist ein Beispiel!
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.
      
Beiträge: 1876
Erhaltene Danke: 129
Win 8.1, Xubuntu 15.10
|
Verfasst: Do 04.02.10 17:37
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Do 04.02.10 17:40
Also wars doch richtig! Ich bin total durcheinander von der Schule. 
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
Financeflash 
Hält's aus hier
Beiträge: 15
|
Verfasst: Do 04.02.10 18:13
Bei mir funktioniert alles wunderbar, außer, dass die linke Seite nicht zugewiesen werden kann:
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 public end;
var Form1: TForm1;
implementation
{$R *.dfm} var count : integer; name : array [1..20] of string; kapital : array [1..20] of single;
procedure TForm1.FormCreate(Sender: TObject); begin count := 0; end;
procedure TForm1.btnnachsterClick(Sender: TObject); var count:integer; begin Inc(count); if count <= StrToInt(edGesellschafter.Text)-1 then begin name[count] :=edName.Text; edName.Clear; edName.SetFocus; end else showmessage('bla bla bla');
end;
end. |
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: Do 04.02.10 20:24
[Fehler] Uohg.pas(54): Der linken Seite kann nichts zugewiesen werden.
|
|
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: 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 
Hält's aus hier
Beiträge: 15
|
Verfasst: 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:
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 begin
namen[count]:=edName.Text; edName.Clear; edName.SetFocus;
end; btnnachster.Visible:=false; end; |
|
|