Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Während ein Programm läuft, Image hinzufügen (https://www.delphipraxis.net/147672-waehrend-ein-programm-laeuft-image-hinzufuegen.html)

xZise 15. Feb 2010 23:03

Re: Während ein Programm läuft, Image hinzufügen
 
Moin,
erstmal ein kleiner Hinweis: Dieses "a.bmp" ist eigentlich unzureichend. Du weißt nie so richtig, welchen Pfad du davor hast (das muss nicht umbedingt der Pfad zur *.exe sein!).
Stattdessen am besten den Pfad deiner *.exe vorne dranfügen:
Delphi-Quellcode:
ExtractFilePath(ParamStr(0)) + 'a.bmp'
Das ParamStr(0) gibt den Dateiname deiner exe-Datei zurück. Und das ExtractFilePath dann den Pfad zu einer Datei inklusive eines abschließenden "\".

Zur "Liste":
An sich ist die Einfach zu benutzen:
Delphi-Quellcode:
var
  SL : TStringList;
  i : Integer;
begin
  SL := TStringList.Create;
  SL.LoadFromFile(....);
  for i := 0 to SL.Count - 1 do
  begin
    ShowMessage(SL[i]);
  end;
end;
Hier erstelle ich zuerst ein Objekt mit dem ich dann arbeiten kann. Dann lade ich die Datei (TStringList.LoadFromFile(<Dateiname>)) und gehe dann jede Zeile durch und lasse die als Dialog ausgeben. Dabei gibt TStringList.Count die Anzahl der Zeilen an. Und mit den eckigen Klammern kannst du auf eine Zeile zugreifen (beginnend bei 0).

MfG
Fabian

Delphi-Narr 16. Feb 2010 10:29

Re: Während ein Programm läuft, Image hinzufügen
 
Das "a.bmp" nicht ausreichend ist, ist mir schon klar... Standardmäßig wird jedoch das Programmverzeichnis benutzt.
Es bringt aber eigentlich nichts, wenn man die Zeilen ausgeben lässt.

Also wenn man jetzt alle Objekte erstellen will und meine Prozedur benutzen würde, könnte man das so aufrufen:

In der Datei sieht das so aus:


Name
Left
Top
Width
Height
Quelle

Aufruf:
Delphi-Quellcode:
var
  SL : TStringList;
  i : Integer;
begin
  SL := TStringList.Create;
  SL.LoadFromFile(Dateipfad der *.txt); //Datei mit Angaben zu den Images in die Liste laden
  i:=0;
  while i<SL.count do //Liste durchlaufen
  begin
       ErstelleImage(Form1,StrToInt(SL[i+1]),StrToInt(SL[i+2]),StrToInt(SL[i+3]),StrToInt(SL[i+4]),SL[i+5],True);
       i:=i+6;
  end;
  SL.Free;
end;
Edit:
Also hier wird die Liste SL, in der sich alle Zeilen der Datei befinden, durchlaufen. Bei dieser Methode empfiehlt sich keine
for-Schleife, da pro Schleifendurchlauf auf 5 verschiedene Zeilen zugegriffen wird.
Anschließend wird die Prozedur ErstelleImage aufgerufen. Als parameter werden Zeilen aus der Liste übergeben. Die Zeilenzahl ist immer relativ zur Zeile, in der sich der Name befindet (Image1,etc)
Um zum nächsten Objekt zu springen, wird i um 6 erhöht. Dadurch werden die bereits in SL[i+x] verwendeten Werte übersprungen

Liebe Grüße

xZise 16. Feb 2010 10:36

Re: Während ein Programm läuft, Image hinzufügen
 
Zitat:

Zitat von Delphi-Narr
Das "a.bmp" nicht ausreichend ist, ist mir schon klar...

Dir vielleicht aber nicht den Threadersteller.
Zitat:

Zitat von Delphi-Narr
Standardmäßig wird jedoch das Programmverzeichnis benutzt.

Aber (wenn ich mich richtig erinnere) sobald ein Speichern/Öffnen Dialog aufgerufen wurde, ist das anders!
Zitat:

Zitat von Delphi-Narr
Es bringt aber eigentlich nichts, wenn man die Zeilen ausgeben lässt.

Es war nur als Beispiel gedacht, was er mit einer TStringList machen kann. Du hast mehr oder weniger einfach Code gepostet ohne das der Threadersteller weiß was er da tut.

MfG
Fabian

Delphi-Narr 16. Feb 2010 10:53

Re: Während ein Programm läuft, Image hinzufügen
 
Zitat:

Zitat von xZise
Zitat:

Zitat von Delphi-Narr
Das "a.bmp" nicht ausreichend ist, ist mir schon klar...

Dir vielleicht aber nicht den Threadersteller.

Es war nur als Beispiel gedacht, dass klar wird, dass man an dieser Stelle den Pfad der Datei weitergeben muss.
Zitat:

Zitat von xZise
Zitat:

Zitat von Delphi-Narr
Standardmäßig wird jedoch das Programmverzeichnis benutzt.

Aber (wenn ich mich richtig erinnere) sobald ein Speichern/Öffnen Dialog aufgerufen wurde, ist das anders!

Das war mir nicht so klar... Wieder was gelernt^^

Zitat:

Zitat von xZise
Zitat:

Zitat von Delphi-Narr
Es bringt aber eigentlich nichts, wenn man die Zeilen ausgeben lässt.

Es war nur als Beispiel gedacht, was er mit einer TStringList machen kann. Du hast mehr oder weniger einfach Code gepostet ohne das der Threadersteller weiß was er da tut.

Ich hatte den ersten Code mit sehr vielen Kommentaren versehen, alle weiteren Codeschnipsel müssten eigentlich klar sein, wenn man den ersten verstanden hat.
Ich editier den lezten dann mal.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz