Autor Beitrag
xsus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51

Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
BeitragVerfasst: Fr 28.10.11 16:57 
Hallo, ich habe in der Vergangenheit nur Konsolenanwendungen geschrieben,
nun gehe ich dazu über Programme mit GUI zu schreiben. Zum Üben versuche ich einfach,
meine alten Konsolenanwendungen in Programme mit GUI umzuschreiben. Nun stehe ich aber vor einem Problem.
Ich möchte ein Programm schreiben, dass alle Teiler einer beliebigen Zahl auflistet. In der Konsolenanwendung kein Problem,..
Ich weiß genau was und wo der Fehler steckt. Er überschreibt meine Variable immer und gibt mir nur den größten, letzten Teiler aus...
Wie realisiere ich, dass er mir eine Liste erstellt und alle Teiler auflistet? Benötige ich dafür Arrays? Wenn ja, wie gehe ich damit um?

Konsolenanwendung:

ausblenden 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:
program alleTeiler;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var n, t:integer;

begin
    writeln ('Geben Sie bitte eine natuerliche Zahl ein, ');
    writeln ('von der Sie alle Teiler wissen moechten.');
    writeln;
    write ('Eingabe: ');
    readln (n);
    writeln;
    writeln ('.................................');
    writeln ('Sie haben ',n,' eingegeben.');
    writeln ('.................................');
    writeln;
    writeln ('---------------------------------------------------------');
    writeln ('Ich liste Ihnen nun alle Teiler der Zahl ',n,' auf:');
    writeln;
    for t:=1 to n do
    if n mod t=0 then
    writeln (n, ' ist durch ', t, ' teilbar.' );
    writeln ('---------------------------------------------------------');
    readln;
end.


...funktionier ja soweit ganz gut...

...nun zum Problemfall - Anwendung:
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:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var eingabe,zaehler:integer;
begin
  eingabe:=StrToInt(edit1.text);
  for zaehler:=1 to eingabe do
      if eingabe mod zaehler=0 then
         label2.Caption:=IntToStr(zaehler);

end;

end.


Bin halt noch totaler Anfänger..also einfach erklären ^^ ...vielen Dank ..LG


Moderiert von user profile iconNarses: Topic aus Algorithmen, Optimierung und Assembler verschoben am Fr 28.10.2011 um 17:47
Teekeks
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 211
Erhaltene Danke: 23



BeitragVerfasst: Fr 28.10.11 17:08 
Entweder du ersetzt die Konsole durch ein TMemo wodurch aus jedem Writeln() ein memo1.Add() wird, oder du fügst zu deinem label immer nur die neuen Zahlen hinzu mit
ausblenden Delphi-Quelltext
1:
label2.caption := label2.caption + inttostr(zaehler)					


Dein momentanes Problem ist, dass ein Label bei der Ausgabe nicht wie eine Konsole den Text nur hinzufügt sondern komplett jedes mal neu setzt.

Gruß Teekeks

Für diesen Beitrag haben gedankt: xsus
GuaAck
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 378
Erhaltene Danke: 32

Windows 8.1
Delphi 10.4 Comm. Edition
BeitragVerfasst: Fr 28.10.11 18:12 
Auch TStringgrid ist dafür hübsch (Eine Liste, die etwa wie eine EXCEL-Tabelle aussieht.) Dann hat man das Ergebnis schön übersichtlich in Spalten und Zeilen. Zeilen- und Spaltenindex für die nächste zahl muss man allerdings selbst führen.

Gruß
GuaAck

Für diesen Beitrag haben gedankt: xsus
xsus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51

Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
BeitragVerfasst: Fr 28.10.11 18:26 
Hey,
also das mit dem label immer eins hinzufügen klappt..ist simple und nicht so schön ^^ ...
wie verwende ich denn TMemo und / oder Tstringgrid ? ;D davon hab ich noch nie gehört ...
LG schumann.vas
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 28.10.11 18:39 
user profile iconxsus hat folgendes geschrieben Zum zitierten Posting springen:
wie verwende ich denn TMemo und / oder Tstringgrid ? ;D davon hab ich noch nie gehört ...
Auf dein Formular legen und/oder ausprobieren oder F1 drücken oder...

Außerdem gibts z.B. die Doku:
docwiki.embarcadero....Bearbeitungselemente
docwiki.embarcadero....StdCtrls.TMemo.Lines
...
xsus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51

Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
BeitragVerfasst: Fr 28.10.11 18:56 
Zitat:
Auf dein Formular legen und/oder ausprobieren oder F1 drücken oder...

Außerdem gibts z.B. die Doku:
docwiki.embarcadero....Bearbeitungselemente
docwiki.embarcadero....StdCtrls.TMemo.Lines


....ausprobieren..hatte ich schon längst gemacht, deshalb habe ich mich ja nochmal gemeldet^^ (ich nerv euch net umsonst) ...bei meinem Probieren kam herraus: Inkonpatible Typen TMemo und Integer ...

F1 - die Hilfe , die funktioniert nicht...ist ein bekannter Fehler bei Windows 7 und Delphi 7 ...

und die Links sind für nen Anfänger (für mich) zu komplex ._.

...wär jmd. so lieb das zu erklären? Danke LG
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 28.10.11 19:48 
Also wenn dir so ein Beispiel MyMemo.Lines.Add(...); schon zu komplex ist, dann sollte man über ein anderes Hobby nachdenken. ;)
xsus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51

Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
BeitragVerfasst: Fr 28.10.11 19:51 
das hat nichts damit zu tun ;) ..ich lerne das zur Zeit in der Schule ..jetzt sind Ferien und ich möchte meinen Horizont erweitern ..bloß .soll ichs mir aus den fingern saugen? ich glaube du hast das auch nicht von alleine gelernt, sondern duch personen die es dir lehrten ;b
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 28.10.11 22:00 
user profile iconxsus hat folgendes geschrieben Zum zitierten Posting springen:
...bei meinem Probieren kam herraus: Inkonpatible Typen TMemo und Integer ...
Bei welchem Quelltext denn?

user profile iconxsus hat folgendes geschrieben Zum zitierten Posting springen:
F1 - die Hilfe , die funktioniert nicht...ist ein bekannter Fehler bei Windows 7 und Delphi 7 ...
Richtig, das Problem ist bekannt, das habe ich in meiner Anleitung auch alles geschrieben, inklusive der Lösung:
www.delphi-library.de/topic_89408.html

user profile iconxsus hat folgendes geschrieben Zum zitierten Posting springen:
und die Links sind für nen Anfänger (für mich) zu komplex ._.

...wär jmd. so lieb das zu erklären?
Naja, die Frage ist halt was dir daran nicht klar ist...

user profile iconxsus hat folgendes geschrieben Zum zitierten Posting springen:
ich glaube du hast das auch nicht von alleine gelernt, sondern duch personen die es dir lehrten ;b
Ich hatte als ich angefangen habe Delphi 1 und die Hilfe dazu, mehr nicht. Internet hatte ich da noch nicht, nur später dann mal in der Bibliothek oder in der Schule, aber nicht ganz am Anfang. ;-)
Das ging eigentlich relativ gut bis ich mit der Windows API zu tun bekommen habe, da hatte ich zuerst ein paar Probleme.

Für diesen Beitrag haben gedankt: xsus
xsus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51

Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
BeitragVerfasst: Fr 28.10.11 22:08 
Ich hab ganz vieles durchprobiert..entweder waren die nicht kompatibel oder ich hatte zu wenig echt parameter (oder so..) ...der 2. Quelltext..ganz am anfang..den wollte ich mit TMemo und / oder Tstringgrid ausstatten, wie vorgeschlagen , um das Programm anständig auszuführen.. nur mein problem ist das ich im moment nicht weiß wie ich mit denen umzugehen habe..man kann mir z.b sagen: nimm ne for-schleife ..wenn man davon noch nie hörte, kann man das nicht mal eben (gut ..die for schleife beherrsch ich..genug des beispiels)..LG ...danke für den Hinweis mit der Hilfe..werd ich mir gleich morgen mal anschauen ;)
n1con
Hält's aus hier
Beiträge: 12
Erhaltene Danke: 1

Win7 Ultimate x64
Delphi 6, Delphi 2007
BeitragVerfasst: Sa 29.10.11 02:28 
Also mit einem Memo funktioniert das folgendermaßen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var eingabe, i : integer;
begin
  eingabe:= StrToInt(Edit1.Text);

  for i:= 1 to eingabe do
    begin
      if eingabe mod i = 0 then Memo1.Lines.Add(IntToStr(i));
    end;
end;

Für diesen Beitrag haben gedankt: xsus
xsus Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 51

Win 2000, Win XP, Win 7; Ubuntu
Delphi 7, Delphi XE2, C
BeitragVerfasst: Sa 29.10.11 17:56 
Okee ...vielen Dank...ich kanns ;)
n1con
Hält's aus hier
Beiträge: 12
Erhaltene Danke: 1

Win7 Ultimate x64
Delphi 6, Delphi 2007
BeitragVerfasst: So 30.10.11 17:43 
Wenn du es natürlich ganz Effizient gestalten möchtest, dann schreibst du dir eine Funktion, die du in einer Unit speicherst und somit immer wieder verwenden kannst.