AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

oop-lerne es gerade neu-problem

Ein Thema von mr_emre_d · begonnen am 7. Nov 2007 · letzter Beitrag vom 9. Nov 2007
Antwort Antwort
mr_emre_d
(Gast)

n/a Beiträge
 
#1

oop-lerne es gerade neu-problem

  Alt 7. Nov 2007, 23:50
Wie schon die Überschrift sagt habe ich ein Problem.
Jedesmal wenn ich den Button "ändern mit class" anklicke, kommt das:

Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 00403499 in module 'Project1.exe'. Read of address 00000000'.Process stopped. Use step or Run to continue.

Was das ooprogrammieren angeht: ich lerne sie gerade neu in der schule (ca 2-3 Wochen); unser prof. hat es vermieden, uns vorher die records beizubringen... und nun hab ich mal selbst etwas versucht aber ..gescheiter -> bitte um Verständnis(da ich noch ein Noob bin)

Weiß nicht wo ich es hinposten soll, deshalb poste ich es mal hier hin. Bitte moven falls es nicht hier hin gehört
Ich poste mal das ganze Programm:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private declarations }
    zahlen:array[0..4]of integer;

  public
    { Public declarations }
  end;

  mathe = class //mir ist nichts besseres eingefallen, wie unkreativ nicht?
    mwert,kl,gr:integer;
    procedure rechnen;
  end;


var
  Form1: TForm1;
  m: mathe;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 for i:=0 to 4 do begin
  zahlen[i]:=random(50)+1;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.width:=280;
form1.height:=140;
memo1.clear;
end;

procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
memo1.Clear;
 for i:=0 to 4 do memo1.lines.add( (inttostr(zahlen[i]) ));
end;

{ mathe }

procedure mathe.rechnen;
var i,sum:integer;
begin
m.create;
sum:=0;
kl:=51;
gr:=0;
  for i:=0 to 4 do begin
                   sum:=sum+form1.zahlen[i];
                   if form1.zahlen[i]< kl then kl:=form1.zahlen[i];
                   if form1.zahlen[i]>gr then gr:=form1.zahlen[i];
                   form1.memo1.lines.add(inttostr(form1.zahlen[i]));
                   form1.Memo1.lines.add(inttostr(sum));
                   form1.Memo1.lines.add(inttostr(mwert));
                   form1.Memo1.lines.add(inttostr(gr));
                   form1.Memo1.lines.add(inttostr(kl));
                   end;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
m.rechnen;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
showmessage('"init"= zufällige Zahlen werden erzeugt'#13'"einfügen"=init wird in memo1 angezeigt'#13'"ändern mit (einer) class(e)" = aus init wird der Summe aller vorhandenen Zahlen im init,Mittelwert,größter und kleinster Wert!'#13'"Über"=das hier^^');
end;

end.
Übrigens: Es ist mit Delphi 7 Ent geschrieben worden

mfg
  Mit Zitat antworten Zitat
Nuclear-Ping
(Gast)

n/a Beiträge
 
#2

Re: oop-lerne es gerade neu-problem

  Alt 8. Nov 2007, 00:09
Du musst (in der Regel) eine Klasse "instanzieren", bevor du sie benutzen und auf deren Methoden und Eigenschaften zugreifen kannst.
Delphi-Quellcode:
m := mathe.Create;

statt

m.Create;
Solche Instanzen musst (bzw. solltest) du auch irgendwann, wenn du sie nicht mehr benötigst, per FreeAndNil oder Klasse.Free wieder freigeben.

Weiterhin würde ich dir empfehlen, Typdeklarationen ein "T..." voranzustellen. "TMathe" z.B., denn das entspricht der Pascal-Sprachkonvention.

Und wenn wir schon bei OOP sind: Lege "m: mathe" (bzw. "m: TMathe") als "private" oder "public" Eigenschaft der TForm-Klasse an. Solche sog. "globalen Variablen" sind in einem Atemzug mit "OOP" genannt, garnicht gern gesehen.
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#3

Re: oop-lerne es gerade neu-problem

  Alt 8. Nov 2007, 00:25
vielen danke
ich probiers gleich aus
mfg
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#4

Re: oop-lerne es gerade neu-problem

  Alt 9. Nov 2007, 14:19
ich hätte da noch eine frage:
wie kann man float zu char ,oder umgekehrt, konvertieren?
(sowie inttostr, strtoint,....)
mir ist klar das floattochr & chrtofloat nicht funzen

mfg
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

Re: oop-lerne es gerade neu-problem

  Alt 9. Nov 2007, 14:22
mit FloatToStr oder FloatToStrF
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#6

Re: oop-lerne es gerade neu-problem

  Alt 9. Nov 2007, 14:25
Zitat von mr_emre_d:
wie kann man float zu char ,oder umgekehrt, konvertieren?


Das macht _keinen_ Sinn. Float ist eine Fließkommazahl. Also eine Zahl mit Nachkommastellen.
Ein Char ist ein einzelnes Zeichen. Wenn in dem Char zufällig eine Ziffer drinsteht, dann ist das auch nur eine Ziffer, also eine Ganzzahl. Also würde _wenn überhaupt_, nur eine Char <-> Integer konvertierung Sinn machen. Aber auch das ist nicht vorgesehen.

Also lieber das Zeichen in einen String packen und den String dann mit den Dir bekannten Methoden konvertieren.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#7

Re: oop-lerne es gerade neu-problem

  Alt 9. Nov 2007, 14:28
ok thx
  Mit Zitat antworten Zitat
9. Nov 2007, 14:50
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.
Delphi-Frage.
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: oop-lerne es gerade neu-problem

  Alt 9. Nov 2007, 20:29
sag mal, wo liegt deine parmaeter übergabe...????

bei 'n aufruf eines objekts, soll das objekt normal alle parmeter besitzen, welches es braucht um die aufgaben durchzuführen... also 'n zürückgreifen auf globale variablen, in deinem fall auf die variabelen eines imaginaären objekts, ist schon recht kriminell...
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:00 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