Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Einträge aus Array in MessageBox (https://www.delphipraxis.net/179688-eintraege-aus-array-messagebox.html)

Pfl 24. Mär 2014 23:22

Einträge aus Array in MessageBox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi ^^

ich habe eine PSE-Übersicht aufgesetzt (sehr mühevoll :/) Dabei möchte ich die Informationen zu dem angeclickten Element in eine MessageBox schreiben; anbei ein Screenshot des PSE und ein Beispielsource.

Wäre sowas denkbar, die Einträge aus einem String Array auszulesen?

Das geht doch so, oder :

Delphi-Quellcode:
type
PSEArray : Array [1..104] of String;
Vielen Dank im Voraus !!
Ach so, ich vergaß: Die MessageBox hier zeigt nur einen Beispieltext
Source :

Delphi-Quellcode:
Temp :=
var
temp : String;
begin
       'Informationen über die Autoren und das Programm'
  +#13+'========================================'
  +#13+''
  +#13+'Aktuelle Version : 1.1.30 Build 189\2010 Update 1'
  +#13+''
  +#13+'Alle Komponenten sind urheberrechtlich geschützt. '
  +#13+'Das Copyright liegt bei :'
  +#13+''
  +#13+'© by Friedrich Pfeil, 2010-2014'
  +#13+'© by Frank Schultz, 2010-2014.'
  +#13+'Alle Rechte vorbehalten.---'
  +#13+''
  +#13+'Allgemeine Informationen finden Sie in der Hilfe (Tastenkürzel: F2),'
  +#13+'oder öffnen Sie das Alias auf Ihrem Schreibtisch.'
  +#13+''
  +#13+'Vielen Dank, dass Sie sich für das GoetheQuiz entschieden haben. '
  +#13+'EA Berlin.';
  Application.Messagebox(PChar(temp),'Copyright-/Lizenzinformation',64);
end;

himitsu 24. Mär 2014 23:40

AW: Einträge aus Array in MessageBox
 
Wie macht man denn aus mehreren Strings Einen?
Delphi-Quellcode:
Sx := S1 + S2 + S3 ...;
:zwinker:

Also z.B. via FOR-Schleife über das Array rauschen und die Strings "zusammenrechnen".



Hast du dir die Parameter von Delphi-Referenz durchsuchenApplication.Messagebox angesehn?
Möchte das lieber einen String oder einen PChar?



Eine StringListe ist auch ganz nett?



PS:
#13 = Zeilenumbruch vom Mac
#10 = Unix/Linux
#13#10 = Windows, wobei #10 auch halbwegs verbreitet ist, aber die #13 gibt es im Windows ganz selten. (auch wenn Vieles alle Varianten versteht)
Delphi-Referenz durchsuchensLineBreak = noch besser

Popov 24. Mär 2014 23:49

AW: Einträge aus Array in MessageBox
 
himitsu, nichts gegen dein sLineBreak, aber jedes mal wenn ich es brauche, fällt mir der Name nicht ein. Deshalb bleibe ich vorerst bei ^j, alternativ #13#10. Eines Tages merke ich es mir aber.

himitsu 24. Mär 2014 23:58

AW: Einträge aus Array in MessageBox
 
Je öfters du es verwendest, um so schneller fällt es dir ein. :zwinker:
Nja, wenn es kurz sein muß, dann verwendet ich auch die #10.

Aber es gibt auch einige Dinge, da muß man genau aufpassen was man nimmt, wobei es da meistens auch die #13#10 sein sollte.
z.B. das Notepad (bis Win7) versteht kein #10, interpretiert Dieses als "normales" Zeichen und macht keinen Zeilenumbruch.

Pfl 25. Mär 2014 21:57

AW: Einträge aus Array in MessageBox
 
Das mit der for-Schleife klingt doch schon mal nett... :thumb: wie sähe das denn aus? Es sind ja 104 Elemente+ deren Informationen: Elementsymbol, rel. Atommasse, usw...

Sir Rufo 25. Mär 2014 22:22

AW: Einträge aus Array in MessageBox
 
Was diese Frage mit einem Array zu tun hat erschließt sich mir nun wirklich nicht ...

Für jedes Element gibt es Meta-Informationen (Name, Gewicht, ...).
Diese Informationen sollten logisch zusammengefasst werden (
Delphi-Quellcode:
record
,
Delphi-Quellcode:
class
).

Dann noch eine Logik, die zum gewählten Element genau die zugehörigen Meta-Informationen liefert.

Jetzt noch eine Logik die eine Meta-Information in einer MessageBox anzeigt.

Ob diese Meta-Informationen nun in einem Array einer Liste oder wo auch immer stehen, sollte für die Anzeige keine Rolle spielen.

p80286 26. Mär 2014 15:02

AW: Einträge aus Array in MessageBox
 
Um die ursprüngliche Idee aufzugreifen
Delphi-Quellcode:
type
  tElem:record
          Namedt:string;
          NameInt : string;
          Atomgew : integer;
          ....
        end;
var
  PSE : Array [1..104] of tElem;
Das sollte es eigentlich tun.

Nach einem Klick auf ein Element wird der Inhalt eines Records ausgegeben. Da braucht's keine Schleife!


Gruß
K-H

himitsu 26. Mär 2014 15:15

AW: Einträge aus Array in MessageBox
 
In diesem Fall kann man auch gern eine INI, XML, Datenbank oder Sonstwas nehmen, darin die Daten erstmal zusammenstellen.
> Jeweils ein Abschnitt/Knoten pro Element und dazu die ganzen Eigenschaften.

Diese Datei kommt dann entweder zur EXE ins verzeichnis oder als Resource in die EXE.

Bei Programmstart läd man dann die Daten aus der Datei in eine Liste solcher Daten-Objekte. (bei der DB kann man sich das sparen)




Man kann natürlich die Liste/Array der mit solchen Datenobjekten oder Records auch direkt im Quellcode füllen, aber das erstellen/bearbeiten dieser Daten gestaltet sich so nicht unbedingt einfacher.

PS: Jedes Jahr werden neue Atome erfunden/entdeckt ... so bräuchte man nur die Datendatei/Datenbnk aktualisieren und wenn man auch noch die Anzeige aus den Daten generiert, erweitert sich das Programm ganz von alleine. :stupid:



PPS: Wenn die Daten im Hintergrund so schön in einer Objektliste/Datenbank rumliegen, dann könnte man sogar eine nette Suchfunktion anbieten.

Popov 26. Mär 2014 15:47

AW: Einträge aus Array in MessageBox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Viele Wege führen nach Rom:
Delphi-Quellcode:
var
  Test: PSEArray;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  for i := Low(Test) to High(Test) do
    Test[i] := IntToStr(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  with TStringList.Create do try
    for i := Low(Test) to High(Test) do Add(Test[i]);
    ShowMessage(Text);
  finally Free end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: Integer;
  s: String;
begin
  s := '';
  for i := Low(Test) to High(Test) do s := s + Test[i] + #13#10;
  ShowMessage(s);
end;
Das Problem ist, dass es vermutlich gar nicht um eine MessageBox geht. Erstens bekommt man die 104 Zeilen nicht auf den Bildschirm, der OK Button wird unten verschluckt.

Zweiten gehe ich davon aus, dass der TE an einem zweiten Fenster interessiert ist, in dem er die Informationen vom angeklickten Element anzeigen möchte, so wie im Beispiel:

Sir Rufo 26. Mär 2014 15:57

AW: Einträge aus Array in MessageBox
 
Zitat:

Zitat von Popov (Beitrag 1253570)
Das Problem ist, dass es vermutlich gar nicht um eine MessageBox geht. Erstens bekommt man die 104 Zeilen nicht auf den Bildschirm, der OK Button wird unten verschluckt.

Wenn ich mir die Ausgangsfrage anschaue
Zitat:

Zitat von Pfl (Beitrag 1253340)
Dabei möchte ich die Informationen zu dem angeclickten Element in eine MessageBox schreiben

Dann weiß ich ehrlich nicht gesagt, wie du darauf kommst, dass er keine MessageBox und alle Elemente auf einen Schlag anzeigen will?

Popov 26. Mär 2014 16:01

AW: Einträge aus Array in MessageBox
 
Zitat:

Zitat von Sir Rufo (Beitrag 1253571)
Dann weiß ich ehrlich nicht gesagt, wie du darauf kommst, dass er keine MessageBox und alle Elemente auf einen Schlag anzeigen will?

s. u.
Zitat:

Zitat von Pfl (Beitrag 1253503)
Das mit der for-Schleife klingt doch schon mal nett... :thumb: wie sähe das denn aus? Es sind ja 104 Elemente+ deren Informationen: Elementsymbol, rel. Atommasse, usw...


Sir Rufo 26. Mär 2014 16:11

AW: Einträge aus Array in MessageBox
 
Zitat:

Zitat von Popov (Beitrag 1253573)
Zitat:

Zitat von Sir Rufo (Beitrag 1253571)
Dann weiß ich ehrlich nicht gesagt, wie du darauf kommst, dass er keine MessageBox und alle Elemente auf einen Schlag anzeigen will?

s. u.
Zitat:

Zitat von Pfl (Beitrag 1253503)
Das mit der for-Schleife klingt doch schon mal nett... :thumb: wie sähe das denn aus? Es sind ja 104 Elemente+ deren Informationen: Elementsymbol, rel. Atommasse, usw...


Ja, da habt ihr ihn schön in die falsche Richtung geschickt ;)

Popov 26. Mär 2014 16:25

AW: Einträge aus Array in MessageBox
 
Es gibt zwei Sorten von Fragestellern - solche die zwar ein Problem haben, aber auch die Zeit der Welt. Sie stellen die Frage und schauen dann gelegentlich vorbei ob es Antworten gibt. In den Fällen überlegen sie sich dann gut was sie antworten sollen und posten es evtl. am nächsten Tag. Dann gibt es auch solche die ein Forum fast wie ein Chat nutzen.

Was dieser Fragesteller nun wirklich will, erfahren wir, wenn er sich wieder meldet.

Sollte er also nicht die 104 Daten auf ein mal in einer MessageBox anzeigen wollen, könnte ich mir vorstellen, dass er eine InfoBox zu den Elementen benötigt (wie im Beispiel).

Pfl 6. Apr 2014 21:20

AW: Einträge aus Array in MessageBox
 
Docxh doch, das versuche ich ja gerade...

Bsp : H

Elementsymbol : H
Rel. atommassee : xy
GHS: F+
...
Delphi-Quellcode:
Application.MessageBox(PChar(Temp),'',mb_ICONASTERISK);
Für Sb dasselbe nur andere Infos

Sir Rufo 6. Apr 2014 23:22

AW: Einträge aus Array in MessageBox
 
Zitat:

Zitat von Popov (Beitrag 1253578)
Was dieser Fragesteller nun wirklich will, erfahren wir, wenn er sich wieder meldet.

Sollte er also nicht die 104 Daten auf ein mal in einer MessageBox anzeigen wollen, könnte ich mir vorstellen, dass er eine InfoBox zu den Elementen benötigt (wie im Beispiel).

Zitat:

Zitat von Pfl (Beitrag 1254839)
Docxh doch, das versuche ich ja gerade...

ähhhhmmmm .... watten nun :gruebel:

Ist so wie: "Willst du Sekt oder Selters?" - "Ja!" :mrgreen:
Zitat:

Zitat von Pfl (Beitrag 1254839)
Bsp : H

Elementsymbol : H
Rel. atommassee : xy
GHS: F+
...
Delphi-Quellcode:
Application.MessageBox(PChar(Temp),'',mb_ICONASTERISK);
Für Sb dasselbe nur andere Infos

Aha, also wie schon im Eingangspost beschrieben die Info für ein Element von den 104 in einer MessageBox anzeigen.

Popov 7. Apr 2014 00:36

AW: Einträge aus Array in MessageBox
 
Dass das Anzeigen aller 104 Elemente in einer MessageBox Unsinn ist, ist klar. Wer aber bei seiner Frage in #1 unnötigerweise über Arrays spricht:
Delphi-Quellcode:
type PSEArray : Array [1..104] of String;
, was meiner Meinung mit dem eigentlichen Problem nichts zu tun hat, und bei einer Antwort wie der von himitsu in #2, die einem zeigt wie man Strings zusammensetzt, antwortet, dass "FOR-Schleife über das Array rauschen" sich schon mal gut anhört, was soll man da als Antwort geben?

Er hat 104 Elemente und will Details über ein Element anzeigen. Wozu dann die Erwähnung der Arrays?

Er will Details über ein Element anzeigen? Im Beitrag #1 hat er ein fertiges Beispiel wie man mehrere Zeilen in einer MessageBox darstellen kann, also hat er die Lösung.

Was ist also die Frage?


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 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