Delphi-PRAXiS
Seite 9 von 12   « Erste     789 1011     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Probleme mit Listbox Einträgen (https://www.delphipraxis.net/115832-probleme-mit-listbox-eintraegen.html)

Die Muhkuh 21. Jun 2008 23:42

Re: Probleme mit Listbox Einträgen
 
Hi,

hab mir nochmals den Code angeguckt.

Ich rede jetzt von der Main.pas.

Bisschen gekürzt sieht es so aus:

Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var
  lIndex: Integer;
begin
  Err := ShellExecute(Form2.Handle,
      'open',
      Pchar(MeinArray[lIndex].RealFileName),
      NIL,
      NIL,
      SW_SHOWNORMAL);
end;
Das Problem ist hier einfach, dass lIndex nichts zugewiesen wurde. Dem musst Du etwas zuweisen. Höchstwahrscheinlich den ItemIndex der ListBox1.

[edit] Ich sehe sogar noch mehr!

Du hast einmal in der Name.pas ein MeinArray definiert und einmal in der Main.pas ein MeinArray definiert. Du befüllst nur das in der Name.pas. Das das nicht in der Main.pas funktioniert, ist ja nun klar :zwinker: [/edit]

@Detlef: Fang mal Deinen Vogel wieder ein :tongue:

DeddyH 21. Jun 2008 23:47

Re: Probleme mit Listbox Einträgen
 
*Aaaaaarrrrgghh*
Zitat:

Zitat von DeddyH
Außerdem würde ich für Typen, die ich in mehreren Formularen brauche, eine eigene Unit anlegen und in allen Formularunits einbinden, die diese Typen verwenden.

Das gilt auch für globale Variablen, sofern man denn meint, solche zu brauchen.

Johnny Bravo 21. Jun 2008 23:50

Re: Probleme mit Listbox Einträgen
 
lIndex ist doch initialisiert mit [/delphi]:= ListBox1.ItemIndex;[delphi]

aber wie soll ich denn dann den Eintrag von der Name.pas in die Main.pas bekommen? Das Edit wo der Alternativnamen geschrieben wird, sitzt auf der Name.pas. Die Listbox, in der dieser Name hineinkommt, sitzt auf der Main.pas.
ich dachte, es wäre ein array, was sich beide units teilen.

wie lautet dann der korrekt Pchar bei Shellexecute?

Wie gesagt, ich benutze ein Array zum erstenmal.

Die Muhkuh 21. Jun 2008 23:53

Re: Probleme mit Listbox Einträgen
 
Zitat:

Zitat von Johnny Bravo
ich dachte, es wäre ein array, was sich beide units teilen.

Dann musst Du es auch als solches behandeln.

Einfach bei beiden definieren is' nich' :stupid:

Du könntest in der Name.pas alles was dieses Array betrifft rauslöschen (nur die Definition!!!) und im Code dann (testweise, da unsaubere Lösung!) anstatt MeinArray Form2.MeinArray schreiben.

Und den lIndex in der Main.pas:

Delphi-Quellcode:
lIndex := ListBox1.ItemIndex

DeddyH 21. Jun 2008 23:56

Re: Probleme mit Listbox Einträgen
 
Ich brauch jetzt ne Pennpause. Cobra (Manuel), übernehmen Sie :lol:

Die Muhkuh 21. Jun 2008 23:57

Re: Probleme mit Listbox Einträgen
 
Bin schon fleißig dabei, Chef :mrgreen:

Johnny Bravo 22. Jun 2008 00:06

Re: Probleme mit Listbox Einträgen
 
ich merke gerade das ich nicht mehr weit komme ich bin zu müde. ich mach in ein paar stunden weiter, trotzdem danke. :zwinker:

DeddyH 22. Jun 2008 08:42

Re: Probleme mit Listbox Einträgen
 
Das Problem ist ganz einfach: Wenn Du in beiden Units jeweils eine Variable vom Typ TDeinArray definierst, sind das auch 2 verschiedene Variablen. Wenn mein Nachbar und ich das gleiche Auto haben, kann er seins so oft waschen, wie er will, davon wird meins nicht sauberer :zwinker:

Die Muhkuh 22. Jun 2008 08:50

Re: Probleme mit Listbox Einträgen
 
Leider, Detlef, leider :mrgreen:

Johnny Bravo 22. Jun 2008 11:47

Re: Probleme mit Listbox Einträgen
 
Ok, ich hab jetzt eine Unit names "FileArray" erstellt,in der sich MeinArray befinden soll, worauf die Units Main und Name zugreifen sollen.
Unit Name soll schließlich die Daten ins Array schicken.
in der FileArray befindet sich bis jetzt folgendes:
Hab in beiden Formularen Main und Name in der Uses Klausel FileArray eingetragen.[delphi]
[pre]unit FileArray;


interface
var
lIndex : Integer;

implementation
type
TFilenameInfos = record
RealFileName: String;
DisplayName: String;
private
MeinArray: Array of TFilenameInfos; // TFilenameInfos wurde nicht vollständig definiert, Fehlermeldung Nr.1, "Das Private Symbol "Mein Array wurde deklariert, aber nie verwendet"
end;
end.
[/pre]

[pre]
procedure TForm4.Button1Click(Sender: TObject);
var
IconIndex : Integer;
h : hIcon;
S : String;
Icon : TIcon;


begin


if (Edit1.Text = '') then
begin
ShowMessage('Bitte geben sie einen Namen ein.');
exit;
end
else

if Form2.ListBox1.ItemIndex >= 0 then
begin
MeinArray.lIndex := Length(MeinArray);
SetLength(FileArray.FileArray, lIndex + 1);
MeinArray[lIndex].RealFileName := Form2.OpenDialog1.FileName;
MeinArray.MeinArray[lIndex].DisplayName := Form4.Edit1.Text;
Form2.ListBox1.Items.Add(MeinArray[lIndex].DisplayName);
Form2.Listbox1.Update;
end;
[/pre]

wenn ich oben überall ein FileArray vor das MeinArray setzte, bekomme ich eine fehlermeldung "Nicht deklarierter bezeichner MeinArray und lIndex"
Aber lIndex ist doch als globale Variable in Unit FileArray gesetzt oder nicht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 Uhr.
Seite 9 von 12   « Erste     789 1011     Letzte »    

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