Autor Beitrag
Tobiklein
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 26.03.06 15:37 
Hi!!!
Wir haben in der Schule auch Delphi und ich komm da einfach absolut nicht mit!!!!
Ich soll jetzt ein Programm für Delphi erstellen und dabei eine Variable vom Datentyp ARRAY verwenden!!?? Das Programm soll nach folgendem Schema erstellt werden siehe Datei anhang!!!!!!

Man soll in das Kästchen bei personenanzahl eingeben wieviele Personen im Auto mitfahren, das soll 8 mal von statten gehen!!!! vorne bei PKW-NR: soll sich die zahl immer ändern , also erst die 1 dann gibt man Personenanzahl ein, dann speichern, das immer so weiter bis man das 8 mal gemacht hat. Wenn man auf Personenliste klickt soll angezeigt werden, was man vorher eingegeben hat!!! Siehe das bild bei Dateianhang!!!!

Bitte helft mir!!! Ich brauch das dringend!!!

Danke MFG Tobi

Moderiert von user profile iconGausi: Ein paar ? und ! aus dem Titel gelöscht.
Einloggen, um Attachments anzusehen!
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: So 26.03.06 16:00 
Sry aber ich kann nicht wirklich eine frage in deinem post finden, außer im titel und der ist ein wenig zu allgemein, wo hängts denn?
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: So 26.03.06 16:10 
Willst du also das sich, wenn du in das editfeld etwas eingibst sich die zahl die im Label steht um eins erhöht ?
Grishnak
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 221

Windows XP Home
Delphi 7 PE, Delphi 2005 PE
BeitragVerfasst: So 26.03.06 16:23 
Dürft ihr nur statische Array benutzen oder auch dynamische?

PS: Ich glaube, deine '!'-Taste klemmt! :wink:

_________________
Mach' etwas idiotensicher und irgendjemand erfindet einen besseren Idioten!
Stoney
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 122

Mac OS X 10.6 "Snow Leopard", Ubuntu Linux 9.04, Mandriva 2010, Win 7, Win Vista, Win XP
Object Pascal (Turbo Delphi, FPC 2.2.4, Lazarus), C++ (Code::Blocks, XCode), Java (Eclipse)
BeitragVerfasst: So 26.03.06 16:25 
user profile iconIronwulf hat folgendes geschrieben:
Sry aber ich kann nicht wirklich eine frage in deinem post finden, außer im titel und der ist ein wenig zu allgemein, wo hängts denn?

Da schließ ich mich an. Tobiklein, dein Posting ist zu schwammig. Und ich verstehe nicht, welche Rolle der Bildanhang haben soll?

Wenn du Probleme hast, ein Array zu deklarieren: Ein Array ist als eine Kette von Variablen zu betrachten. Du benötigst einen Variablentyp und die Größe deines Arrays muss angegeben sein (bei dynamischen Arrays nicht, aber ich will es nicht zu kompliziert machen).
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
// So wird es deklariert
Var Zahlen: array[0..10] of Integer;

[...]

// So wird z.B. ein Wert zugewiesen
Zahlen[0] := 15;
Zahlen[2] := 8;
// etc.


Zitat:

[...] also erst die 1 dann gibt man Personenanzahl ein, dann speichern, das immer so weiter bis man das 8 mal gemacht hat. Wenn man auf Personenliste klickt soll angezeigt werden, was man vorher eingegeben hat!!!

Speichern und Laden? Da würde ich mal AssignFile vorschlagen. Oder soll es nicht auf die Festplatte gespeichert werden? :?!?:


P.S.: Man kann Sätze auch mit Punkten abschließen und ein Ausrufzeichen reicht. ;)
Tobiklein Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 26.03.06 16:49 
Ersma sorry das ich erst jetz wieder schreibe, mein Internet funktioniert irgendwie nicht so gut und da ich die ganze Zeit aus irgendwelchen Gründen nicht mehr ins Internet gerkommen!


Also, die Frage ist eigentlich das Listing!Ich weiß nicht wie ich das Programm schreiben soll!und die Aufgabe ist dieses Programm zu schreiben.
Das Bild ist die einzige Quelle die wir haben!

Ja, wenn man ins Editfeld was eingibt und dann auf speichern drückt, soll die Zahl im Label automatisch um eins erhöht werden!Das ganze bis zur Zahl 8!
Welche Arrays ich verwende ist eigentlich egal.

Was ist denn ein AssignFile?
Ne. also wo das gespeichert wird ist glaub ich egal.
Ich weiß einfach nicht wie ich dieses Programm schreiben soll, geschweige denn anfangen soll zu schreiben!

Bitte helft mir!
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: So 26.03.06 17:19 
hier hast du mal nen Anfang.

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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    lnr: TLabel;
    epersonen: TEdit;
    Label1: TLabel;
    Button1: TButton;
    bspeichern: TButton;
    Button3: TButton;
    procedure bspeichernClick(Sender: TObject);
    procedure epersonenChange(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  pkwnr:Integer;
implementation

{$R *.dfm}

procedure TForm1.epersonenChange(Sender: TObject);
begin
pkwnr:=StrToInt(lnr.Caption);
end;

procedure TForm1.bspeichernClick(Sender: TObject);
begin
pkwnr:=pkwnr+1;
lnr.Caption:=IntToStr(pkwnr);
end;

end.


gruß
Ironwulf
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 733
Erhaltene Danke: 2



BeitragVerfasst: So 26.03.06 17:24 
na du machst nen array:
ausblenden Delphi-Quelltext
1:
Var Auto: array[1..8] of Byte;					

dann brauchst du noch ne zählvariable
ausblenden Delphi-Quelltext
1:
var Zähler: Byte;					

dann im form.oncreate zähler auf 1 setzen
beim button.onklick
überprüfen ob der zähler >= 8 ist wenn ja dann exit
wenn nit den zähler um eins erhöhen
und die zahl so in den array schreiben
ausblenden Delphi-Quelltext
1:
auto[zähler]:= StrTOInt(Edit.Text);					


tjoa das wars schon, ich habs hier mal in pseudocode gemacht, weil wir nicht komplett deine hausaufgaben lösen sollten und ein wenig eigenes können dabei sein sollte
Tobiklein Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 26.03.06 17:28 
Hey cool! Danke für den Anfang!
Jetzt hab ich wenigstens erstmal kapiert wie das geht das der immer eins weiter zählt bei den PKW-Nummern!

Aber wie krieg ich das jetzt hin, das der wenn ich auf Personenliste klicke der mir das alles wieder ausgibt was ich vorher bei Personenanzahl ausgegeben habe?
Sorry, ich weiß, ich stell mich ziemlich blöd an, aba ich komm damit einfach nicht klar! Aber dieses Programm ist für mich bzw. für meinen Notenschnitt sehr wichtig!

Wäre echt schön, wenn noch jemand dieses Listing erweitern könnte!
Würde mich echt freun!

Danke jedenfalls schon mal im vorraus für die hoffentlich bald kommenden Antworten!

Tobias
der Berliner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 417

Win Xp Home
delphi 2005
BeitragVerfasst: So 26.03.06 17:32 
Dafür brauchs du jetzt di weiter oben beschriebenen Arrays,
Tobiklein Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 26.03.06 17:36 
Ja, ich weis, aber ich brauch doch ne Prozedur dafür oder nicht?
Wo bekomme ich die her?
Da steht ja: Zitat:"Var Auto: array[1..8] of Byte; "
Wo muss ich das denn hineinschreiben? bzw. das "var Zähler: Byte;" oder das "auto[zähler]:= StrTOInt(Edit.Text);" Ich habe große Probleme mit der zuordnung bei Delphi! Ich weiß immer nie wo die Prozeduren her kommen oder wo ich sie hinschreiben muss!! Tut mir echt leid falls ich euch nerve, aber naja.............
Waldteufel
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 26.03.06 17:38 
Hi Tobi. :wave:

Um das Array zu deklarieren, trägst du es oben bei private ein.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
TForm1 = class(TForm)
  lnr: TLabel;
  epersonen: TEdit;
  Label1: TLabel;
  Button1: TButton;
  bspeichern: TButton;
  Button3: TButton;
  procedure bspeichernClick(Sender: TObject);
  procedure epersonenChange(Sender: TObject);
private
  Personenzahl : array[1..8] of cardinal; // <-- Will heißen: Personenzahl ist eine Liste von 8 ganzen Zahlen
public
  { Public-Deklarationen }
end;


Später weist du zum Beispiel den Wert für Auto #5 zu:
ausblenden Delphi-Quelltext
1:
Personenzahl[5] := 15; // <-- Will heißen: Setze den 5. Wert in der Liste 'Personenzahl' auf 15					

Ich würde vorschlagen, für die Ausgabe gehst du die Einträge im Array mit einer for-Schleife durch und gibst sie dann zum Beispiel mit ShowMessage() aus.
Tobiklein Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 26.03.06 17:57 
Achso ja ok!!!
Aber mein Problem ist jetzt wo ich diese Zeile:
ausblenden Delphi-Quelltext
1:
Personenzahl[5] := 15; // <-- Will heißen: Setze den 5. Wert in der Liste 'Personenzahl' auf 15					


hinschreiben muss?
Wenn ich das jetz noch weiß weiß ich wie ich das Programm schreiben muss! Wäre cool wenn du mir das noch sagen könntest! Aber vielen Dank auch für deinen letzten Beitrag, hat mir sehr geholfen!

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 26.03.06 17:58 
hallo,

ich hätte, besser gesabt, ich habe das, mit einem dynamischen array gemacht!

ein dynmisches array deklarierst du so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  public
      { Public declarations }
   PlistArray: Array of byte;  // dynamisch
   anzahl: byte;

die größe des array legts du mit "setlenght(Array,Größe)" fest ;)
d.h. bei jedem klick auf "speicher" erhöhst du die größe deines arrays um 1 und weißt diesem dann den enstrechenden wert zu!

werte weißt du wie bei einem statischen array zu, ich denke das wurde oben bereits zu genüge erklärt.

um die einträge anzuzeigen würde ich einfachheitshalber eine listbox verwenden.
mit dem befehl listbox.items.add(); fügst du die items hinzu ;)

Ich würde dir ja gerne das programm schicken, aber dann fällt das ganze auf der stelle in die kategorie "hausaufgaben machen" ... :P


edit:

wenn du das ganze statisch machst, wie oben beschrieben, würde ich eine zählervariable einsetzen, will heißen, immer wenn du auf speichern klickst, wird diese um eins erhöht. anschließend wird dem array an der stelle i (wert der zählervariablen) der entsprechende wert des editfeldes zugewießen. also etwa so:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure button_speichern;
begin
 inc(i)   // variable um eins erhöhen
 MyArray[i] := ...   // dem array an der stelle i entsprechenden wert zuweißen 
end;


mfg :roll:


Zuletzt bearbeitet von Marc. am So 26.03.06 18:06, insgesamt 1-mal bearbeitet
Tobiklein Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 26.03.06 18:05 
Hey danke Jungs!

Ich hab jetz alles hingekriegt, läuft einwandfrei!

Vielen Dank nochmal!

Tobias