Delphi-PRAXiS
Seite 1 von 2  1 2      

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?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
Seite 1 von 2  1 2      

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