Autor Beitrag
toppaa
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Mo 29.12.08 23:44 
hi,
also möchte ein Programm schreiben das auf gewisse sachen zugreifft wie z.B wenn ich eingebe Baum dann kommt eine nachricht wie z.B Ein Baum is groß"

wie schreib ich das am besten mit arrays oder records oder mit vielen if anweisungen ??

mfg toppaa


Zuletzt bearbeitet von toppaa am Mo 29.12.08 23:50, insgesamt 1-mal bearbeitet
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10184
Erhaltene Danke: 1259

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mo 29.12.08 23:48 
Moin!

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]

Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 00:05 
Du könntest ein konstantes Array mit den Begriffen und dazugehörigen Ausgaben erstellen. Dann gehst du das Array durch und suchst dort den Wert.

Zum Beispiel so:
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:
uses
 ...

type
  TData = record
    Name: string;
    Value: string;
  end;

const
  Data: array[0..2of TData = ((Name: 'Test'; Value: 'Das ist ein Test'),
    (Name: 'Baum'; Value: 'Das ist ein Baum'),
    (Name: 'Adler'; Value: 'Das ist ein Adler'));

...

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := Low(Data) to High(Data) do
    if Data[i].Name = Edit1.Text then
      ShowMessage(Data[i].Value);
end;
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 00:16 
also mit arraxys kenn mich nicht so aus weil ich möchte halt wenn ich ins edit das wort baum eingeebe dass dann halt der dazugehörige text funktioniert das mit arrays?

bin halt noob srys :D

mfg toppaa
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 00:17 
Genau das macht doch der Quelltext und verwendet ein Array dabei. :gruebel:
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 00:27 
gibs zu arrays oder so ne gute erklärung wie das geht und noch was mit der button funktion da kapier ich nich :D

mfg und danke schonmal für die schneller antworten
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 00:31 
Ich weise einmal auf den Crashkurs von user profile iconChristian S. hin:
crashkurs.christian-stelzmann.de
Darin gibt es auch einen Teil zu Arrays.

Ansonsten such einfach mal nach "delphi array" oder so. ;-)
de.wikibooks.org/wik...lphi:_Pascal:_Arrays
www.delphi-treff.de/...komplexe-datentypen/
www.delphibasics.co.uk/RTL.asp?Name=Array
...

// EDIT:
Was passiert in der Schleife ist, dass das Array durchgegangen wird. Low gibt den ersten, High den letzten Index des Arrays an, hier also 0 und 2.
Und dann wird geprüft, ob der Begriff an der aktuellen Stelle im Array i mit dem Inhalt des Edits übereinstimmt.
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 00:37 
cool danke für die antworten ich werd mich mal über arrays informieren dann meld ich mich demächst mal wieder

morgen oder übermorgen


mfg tobbaaaaaaaaaaaaaaaaa
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 14:23 
so hab mal versucht das bsp zu programmieren aber irgendwie weis ich nicht genau was ich falsch gemacht habe.

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

interface

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

  type
   TData = record
    Name: string;
    Value: string;
  end;

const
  Data: array[0..2of TData = ((Name: 'Test'; Value: 'Das ist ein Test'),
    (Name: 'Baum'; Value: 'Besteht aus Holz und hat Blätter'),
    (Name: 'Adler'; Value: 'Ein Raubvogel'));

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := Low(Data) to High(Data) do
    if Data[i].Name = edit1.text then
      ShowMessage(Data[i].Value);
end;
end.


mfg toppaa
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 14:25 
Eigentlich nix soweit ich das beim ersten Blick sehe, was passiert denn (nicht)?

Hast du das OnClick des Buttons nicht zugewiesen? (Doppelklick auf den Button oder Button1Click eintragen im Objektinspektor unter Ereignisse bei OnClick)
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 14:29 
habe ich eingetragen wenn ich jetzt ins edit baum eingebe müsste ja der dazugehörige text kommen oder nicht?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 14:33 
Wenn du auf den Button klickst, ja. Du könntest auf eine Zeile in Button1Click einen Haltepunkt setzen (F5), dann sollte Delphi wenn das Programm läuft und du auf den Button klickst dort ankommen.

Wichtig ist, dass ein direkter Vergleich stattfindet, du musst also "Baum" exakt so eingeben, und nicht "baum" z.B. ;-). Wenn das auch gehen soll, musst du LowerCase bei dem Vergleich benutzen, d.h. die beiden Worte in Kleinschreibung vergleichen.
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 14:35 
jop das wars hatte baum anderes eingeben wo kann diese lowcase genau änderen


mfg toppaa
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 14:48 
LowerCase ist eine Funktion, der du einen String übergeben kannst. Du bekommst diesen dann in Kleinbuchstaben zurück.
ausblenden Delphi-Quelltext
1:
LowerCase(Edit1.Text)					
In dem Array oben musst du dann natürlich auch die zu suchenden Begriffe klein schreiben.
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 18:53 
ehm ich möchte ja erreichen dass ich z.b wenn ich baum einmal so eingeben und so Baum dass dann der Text auch erscheint geht das überhaupt mit dem lowcase befehl. wenn ja wo muss ich anwenden an welcher stelle des obigen quelltextes

danke für eure antworten

mfg toppaa
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 19:00 
ausblenden Quelltext
1:
2:
LowerCase('baum') = 'baum'
LowerCase('Baum') = 'baum'
Bei beidem kommt das selbe heraus, d.h. wenn du statt dem Originalinhalt des Edits (Edit1.Text) den Inhalt in Kleinbuchstaben (LowerCase(Edit1.Text)) mit dem Inhalt des Arrays vergleichst, und dort 'baum' in Kleinbuchstaben steht, dann werden beide Schreibweisen akzeptiert.
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 19:12 
ja ich verstehe was du meinst aber ich weis nicht wo ich das lowercase(edit1.text) unterbringen soll

ich denke mal in der if anweisung oder ??

mfg toppaa
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 19:40 
Richtig. Du willst ja nicht den Originalinhalt mit dem aktuellen Begriff vergleichen, sondern diesen Inhalt in Kleinbuchstaben.

Was passiert ist doch, dass du mit der for-Schleife alle Einträge in Data durchgehst. In der if-Abfrage, wie sie da steht, vergleichst du jetzt den aktuellen Begriff (Data[i].Name) mit dem Inhalt des Editfelds (Edit1.Text). Und jetzt willst du den Begriff nicht mit dem Inhalt des Editfelds wie er da steht vergleichen, sondern mit dem in Kleinbuchstaben umgewandelten Inhalt des Editfelds (LowerCase(Edit1.Text)).
toppaa Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 35

Windows XP Professional

BeitragVerfasst: Di 30.12.08 20:56 
ok danke hab hinnbekommen

ahso noch was kann man mit einem array z.b anstatt text auch auf ein selbstgemaltes bild verweisen??

mfg toppaa
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 30.12.08 21:02 
Dafür könntest du den Dateinamen in einem weiteren Eintrag des Records speichern. Neben Name und Value auch noch FileName z.B., und dann könntest du das Bild in ein TImage laden.
Zum Beispiel:
ausblenden Delphi-Quelltext
1:
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'MeinBild.bmp');					
(wenn das Bild im selben Ordner liegt wie dein Programm)
Statt 'MeinBild.bmp' müsstest du dann den Dateinamen angeben.