Brauche Hilfe!

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Brauche Hilfe!

Beitrag von XDeKa »

Hallo,
ich bin ein ABSOLUTER Anfänger im Bereich Programme schreiben etc.
Muss für die Uni aber ein für mich ziemlich komplexes Programm schreiben.

Ich würde gerne wissen, wie es mir gelingt eine User-Eingabe in einem EditFeld weiterzuverarbeiten beziehungsweise ersteinmal überhaupt aufzunehmen.

Ich habe es so versucht, aber es kommt die Fehlermeldung: "unit1.pas(52,43) Error: Wrong number of parameters specified for call to "Set_Eingabe""

Code: Alles auswählen

unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Set_Eingabe;
    function Get_Eingabe:smallint;
  end;
 
var
  Form1: TForm1;
  Var1:smallint;
 
implementation
 
{$R *.lfm}
 
 
{ TForm1 }
procedure TForm1.Set_Eingabe;
var p1:smallint;
begin
     Var1:=P1;
end;
 
function TForm1.Get_Eingabe: smallint;
begin
  Result:=Var1;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form1.Label1.Visible:=true;
  Form1.Set_Eingabe(StrToInt (Edit1.Text));
  Form1.Label1.Caption:=IntToStr(Form1.Get_Eingabe);
end;
 
 
end.
 
Ich hoffe jemand kann mir helfen.
MFG

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Brauche Hilfe!

Beitrag von m.fuchs »

XDeKa hat geschrieben:ich bin ein ABSOLUTER Anfänger im Bereich Programme schreiben etc.
Muss für die Uni aber ein für mich ziemlich komplexes Programm schreiben.
Hallo XDeKa,

ich fürchte, ich werde mich eventuell gleich bei dir unbeliebt machen. Aber Ehrlichkeit nützt manchmal mehr als Diplomatie. "ABSOLUTER Anfänger" und "ziemlich komplexes Programm" wirst du nicht unter einen Hut bringen. Und deine Frage zeigt, dass deine Selbsteinschätzung völlig korrekt ist. Was aber positiv auffällt, du hast deine Frage gut gestellt. Es ist Quellcode dabei um das Problem nachzuvollziehen und den Fehler hast du auch erwähnt. Also kannst du sicherlich auch mit ein wenig Aufwand dein Wissen vergrößern. Ein guter Anfang dafür, wäre folgendes Werk: http://www.marcocantu.com/epascal/default.htm (auf Deutsch und kostenfrei zum Download).

Ich könnte dir jetzt natürlich auch sagen, was du an deinem Quellcode ändern müsstest, damit er läuft. Aber in meinen Augen lohnt sich das nicht, solange dir die Grundlagen fehlen.

Schau also mal in das elektronisch Buch rein und bei Fragen einfach fragen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

relocate
Beiträge: 61
Registriert: Di 24. Jan 2012, 11:47
OS, Lazarus, FPC: Win (L- FPC 2.4.4 + 2.6.4)
CPU-Target: 32Bit

Re: Brauche Hilfe!

Beitrag von relocate »

Hallo,

das sind wirklich Grundlagen...
Du definierst und schreibst die Prozedur Set_Eingabe ohne eine Parameterübergabe,
versuchst aber sie mit einer solchen aufzurufen.

Form1.Set_Eingabe(StrToInt (Edit1.Text));

Gruß relocate
Würde ich die Dinge so wie alle anderen machen, hätte ich so manche Probleme nicht.

Aber das wäre langweilig.

XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Re: Brauche Hilfe!

Beitrag von XDeKa »

danke erstmal für die schnellen Antworten.
Ich habe ja gesagt bin totaler Anfänger und verstehe nicht wirklich was vom programmieren.

@m.fuchs: mit einer so einer Antwort machst du dich bei mir sicherlich nicht unbeliebt. Ich bin für jede Hilfe dankbar. Nur ist es in meinem Fall so, dass ich einfach 0 Vorkenntnisse habe und im Rahmen unserer Vorlesung habe ich auch nichts gefunden was mich weiter bringt. Danke dir für die Quelle.

@relocate: danke für die Hilfe.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Brauche Hilfe!

Beitrag von m.fuchs »

XDeKa hat geschrieben:Nur ist es in meinem Fall so, dass ich einfach 0 Vorkenntnisse habe und im Rahmen unserer Vorlesung habe ich auch nichts gefunden was mich weiter bringt.
Aus reiner Neugierde: kannst du das ein wenig näher ausführen? Ist das ein Einsteiger-Informatik-Kurs (und an welcher Uni) oder was muss man sich da vorstellen. Man sollte doch meinen, dass Anfängern irgendwie unter die Arme gegriffen wird.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Re: Brauche Hilfe!

Beitrag von XDeKa »

Also ich studiere Maschbau in Do. Die Vorlesung Maschinenbauinformatik ist in zwei Teile gesplittet, im ersten sollte man eigentlich die Programmiersprache lernen um dann abschließend das Projekt bearbeiten zu können. Im zweiten Teil werden dann allgemeine informationstechnische Aspekte behandelt wie Datenbanken etc.

Ich finde das das Programm nicht ohne Vorkenntnisse zu schreiben ist. Naja ich versuche es jetzt noch weiter.

Danke nochmal für die Hilfe!

Lion
Beiträge: 197
Registriert: Mo 24. Mär 2014, 09:58

Re: Brauche Hilfe!

Beitrag von Lion »

Ach du meine Güte, ich sehe schwarz für Deutschland. Maschinenbau ist das Fundament unserer Wirtschaft... wenn die alten Ingenieure sterben kann man auswandern. :shock:

Nun zum Thema...

Das mit der Funktion machst Du viel zu kompliziert... hier die Lösung. Denk aber nach was ich da mache.

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption := Edit1.Text;
end;
 

XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Re: Brauche Hilfe!

Beitrag von XDeKa »

Wenn ich das nur so mache kann ich aber doch nicht weiter mit der User Eingabe rechnen.
Sie wird so doch einfach nur im Label angezeigt oder?

Ps. Programmieren gehört nicht zu meiner Aufgabe oder wozu gibt es Informatiker?? Ich bin mir jeweils ziemlich sicher das ich NIE wieder etwas mit Pascal zutun haben werde! Also mach dir mal keine Sorge um unsere Wirtschaft! :wink:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

OT: Programmierende Maschinenbauer

Beitrag von m.fuchs »

XDeKa hat geschrieben:Programmieren gehört nicht zu meiner Aufgabe oder wozu gibt es Informatiker?? Ich bin mir jeweils ziemlich sicher das ich NIE wieder etwas mit Pascal zutun haben werde!
Sei dir da mal nicht zu sicher. Ich kenne einen Haufen Ingenieure die sehr froh darüber sind, dass sie Pascal gelernt haben und Lazarus oder Delphi ihr eigen nennen. Das wird dir vielleicht auch mal so gehen. Spätestens wenn du im späteren Berufsleben mal schnell ein kleine Programm brauchst und von der Softwareentwicklung hörst: "Das werden wir mit hoher Priorität entwickeln. Kommen Sie doch bitte in 18 Monaten wieder vorbei.... Zur Vorbesprechung."
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Lion
Beiträge: 197
Registriert: Mo 24. Mär 2014, 09:58

Re: Brauche Hilfe!

Beitrag von Lion »

XDeKa hat geschrieben:Wenn ich das nur so mache kann ich aber doch nicht weiter mit der User Eingabe rechnen.
Sie wird so doch einfach nur im Label angezeigt oder?
Ja das stimmt... aber es kommt auch drauf an was Du mit der Eingabe anstellen willst. Hier z.B. eine Addition:

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
var i: Integer;
begin
  i := 5;
  Label1.Caption := IntToStr(StrToInt(Edit1.Text) + i);
end; 
 
// Hier die Textausgabe
procedure TForm1.Button1Click(Sender: TObject);
var str: String;
begin
  str := Edit1.Text;
  Label1.Caption := 'Sie haben ' + str + ' eingegeben!';
end; 
 

XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Re: Brauche Hilfe!

Beitrag von XDeKa »

Es geht um mehrere Parameter die von User eingegeben werden sollen. Jede einzelner wird für eine seperate Rechnung gebraucht.
Die spezielle Situation würde hier zu weit führen.
Es geht mir nur darum Daten, die vom User in ein EditFeld oder eine Combobox eingegeben werden in weiteren Rechnungen weiterzuverarbeiten.
Dass das Label dann die Eingabe nochmal ausspuckt soll nur für den User zur Übersicht eingebaut werden.

Lion
Beiträge: 197
Registriert: Mo 24. Mär 2014, 09:58

Re: Brauche Hilfe!

Beitrag von Lion »

XDeKa hat geschrieben:Es geht um mehrere Parameter die von User eingegeben werden sollen. Jede einzelner wird für eine seperate Rechnung gebraucht.
Die spezielle Situation würde hier zu weit führen.
Es geht mir nur darum Daten, die vom User in ein EditFeld oder eine Combobox eingegeben werden in weiteren Rechnungen weiterzuverarbeiten.
Dass das Label dann die Eingabe nochmal ausspuckt soll nur für den User zur Übersicht eingebaut werden.
Die Eingabe soll also eine Zahl sein?

XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Re: Brauche Hilfe!

Beitrag von XDeKa »

Es sind mehrere Eingaben, der größte Teil sind aber Zahlen richtig.

Lion
Beiträge: 197
Registriert: Mo 24. Mär 2014, 09:58

Re: Brauche Hilfe!

Beitrag von Lion »

Code: Alles auswählen

 
procedure TForm1.Button1Click(Sender: TObject);
var a: Integer;
begin
  a := StrToInt(Edit1.Text);
 
  // hier kann man also beliebige arithmetische Operationen durchführen
  // und mit der Eingabe anstellen was du willst
  a := (a + 5) * 3; 
 
  // Ausgabe
  Label1.Caption := IntToStr(a);
end; 
 
Ich denke das reicht. War mir eine Ehre dem zukünftigen deutschen Top Ingenieur zu helfen. :wink:

XDeKa
Beiträge: 10
Registriert: Mi 6. Aug 2014, 13:54

Re: Brauche Hilfe!

Beitrag von XDeKa »

Vielen dank dafür.
Jetzt habe ich noch den Wunsch, das die Rechnung/Procedure unabhängig vom Knopfdruck ist.
Ich habe versucht mein Programm übersichtlich zu gestalten, d.h. TForm1 soll eigentlich nur für die Oberfläche dienen und die einzelnen Buttons, Edits, Comboboxen etc. verwalten. Alle Rechnungen/Proceduren sollen dann in einer anderen Unit.

Ich habe leider keine Ahnung wie ich das hier besser beschreiben sollte. Hoffe du hast mich verstanden ^^

Antworten