| Autor |
Beitrag |
toppaa
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
      

Beiträge: 10184
Erhaltene Danke: 1259
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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  oder  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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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: 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..2] of 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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
mfg toppaa
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 30.12.08 00:17
Genau das macht doch der Quelltext und verwendet ein Array dabei. 
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
mfg und danke schonmal für die schneller antworten
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 30.12.08 00:31
Ich weise einmal auf den Crashkurs von Christian 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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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.
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..2] of 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 public 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: Di 30.12.08 14:35
jop das wars hatte baum anderes eingeben wo kann diese lowcase genau änderen
mfg toppaa
|
|
jaenicke
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 30.12.08 14:48
LowerCase ist eine Funktion, der du einen String übergeben kannst. Du bekommst diesen dann in Kleinbuchstaben zurück. Delphi-Quelltext In dem Array oben musst du dann natürlich auch die zu suchenden Begriffe klein schreiben.
|
|
toppaa 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 30.12.08 19:00
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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 35
Windows XP Professional
|
Verfasst: 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
      
Beiträge: 19341
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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: 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.
|
|