Re: Probleme mit Listbox Einträgen
LIndex ist eine Integer variable.
das ist im 2ten Formular, wo man den Alternativnamen der Listbox im ersten Formular hizufügt:(Auszug)
Delphi-Quellcode:
Wie gesagt, Showmessage bekomme ich nicht angezeigt, lediglich den Fehler bei der Bereichsprüfung.
[...]
lIndex := Length(MeinArray); SetLength(MeinArray, lIndex + 1); MeinArray[lIndex].RealFileName := Form2.OpenDialog1.FileName; MeinArray[lIndex].DisplayName := Form4.Edit1.Text; Form2.ListBox1.Items.Add(MeinArray[lIndex].DisplayName); [...] Ich weiß nicht mehr weiter.. :nerd: |
Re: Probleme mit Listbox Einträgen
Sollte da nicht noch irgendwo davor ein
Delphi-Quellcode:
lIndex := ListBox1.ItemIndex;
|
Re: Probleme mit Listbox Einträgen
Mir scheint, lIndex ist eine lokale Variable in der Einfüge-Prozedur. Allerdings würde sich das Programm dann gar nicht kompilieren lassen, da sollte eigentlich etwas kommen mit "unbekannter Bezeichner". Hast Du sie vielleicht noch einmal als globale Variable definiert? Vielleicht zippst Du den ganzen Schmu mal und hängst ihn hier an, sonst raten wir noch ewig weiter.
|
Re: Probleme mit Listbox Einträgen
Liste der Anhänge anzeigen (Anzahl: 1)
Danke, das ihr euch den code mal anschaut. Hab ihn im Anhang.
bitte nicht über den aufbau oder sonstiges wundern, ich teste im augenblick nur ein bißchen herum :wink: |
Re: Probleme mit Listbox Einträgen
Du solltest dich entscheiden, oder 2 Variablen verwenden
Zitat:
|
Re: Probleme mit Listbox Einträgen
Mach das mal so, wie Manuel vorgeschlagen hat: als erste Zeile lIndex auf den ItemIndex der Listbox setzen (und unbedingt auf < 0 prüfen, kleiner Zusatz meinerseits).
|
Re: Probleme mit Listbox Einträgen
Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
var IconIndex : Integer; h : hIcon; S : String; Icon : TIcon; Bitmap : TBitmap; OpenDialog : TOpenDialog; lIndex: Integer; begin if (Edit1.Text = '') then begin ShowMessage('Bitte geben sie einen Namen ein.'); exit; end else if Form2.ListBox1.ItemIndex < 0 then MeinArray[lIndex].RealFileName := Form2.OpenDialog1.FileName; SetLength(MeinArray, lIndex + 1); MeinArray[lIndex].DisplayName := Form4.Edit1.Text; lIndex := Form2.ListBox1.ItemIndex; lIndex := Length(MeinArray); Form2.ListBox1.Items.Add(MeinArray[lIndex].DisplayName); // hier gibts einen Fehler bei der Bereichsprüfung, wenn ich auf ok klicke. Wenn ich das entferne, wird logischerweise nichts der Listbox hinzugefügt.... [...] end; |
Re: Probleme mit Listbox Einträgen
Delphi-Quellcode:
Was steht nun wohl in lIndex drin.
lIndex := Form2.ListBox1.ItemIndex;
lIndex := Length(MeinArray); |
Re: Probleme mit Listbox Einträgen
Und achte mal auf die Reihenfolge, erst ermitteln und dann neu setzen. Außerdem sind nun schon wieder woanders, ursprünglich ging es doch um Form2, wieso nun um Form4?
|
Re: Probleme mit Listbox Einträgen
Und
Delphi-Quellcode:
bedeutet, dass nichts angewählt ist. Wie soll das ganze dann funktionieren?
if Form2.ListBox1.ItemIndex < 0 then
Da müsste entweder >= 0 oder > -1 sein. |
Re: Probleme mit Listbox Einträgen
begin und end wären auch ganz angebracht, fällt mir gerade auf.
|
Re: Probleme mit Listbox Einträgen
Delphi-Quellcode:
hab es so mal angepasst...hoffe das stimmt jetzt so für euch.
begin
if Form2.ListBox1.ItemIndex >= 0 then SetLength(MeinArray, lIndex + 1); MeinArray[lIndex].RealFileName := Form2.OpenDialog1.FileName; MeinArray[lIndex].DisplayName := Form4.Edit1.Text; lIndex := Form2.ListBox1.ItemIndex; Form2.ListBox1.Items.Add(MeinArray[lIndex].DisplayName); end; [...] Der Fehler bei der Bereichsprüfung ist immernoch präsent. Sry wenn ich euch nicht direkt folgen kann oder etwas direkt nicht verstehe, ich mach das nicht jeden tag und es ist schon spät :wink: |
Re: Probleme mit Listbox Einträgen
Ich seh da ein end, aber kein begin, das dazu passen würde.
|
Re: Probleme mit Listbox Einträgen
sry, das war nur ein copy&paste fehler. hab nachträglich noch nen kommentar gelöscht, und hab dabei das begin mitgenommen und falsch hingesetzt.
|
Re: Probleme mit Listbox Einträgen
Ich korrigier das mal so, wie ich mir denke, dass es stimmen sollte:
Delphi-Quellcode:
if Form2.ListBox1.ItemIndex >= 0 then
begin //wichtig! lIndex := Length(MeinArray); //erstmal ermitteln SetLength(MeinArray, lIndex + 1); MeinArray[lIndex].RealFileName := Form2.OpenDialog1.FileName; MeinArray[lIndex].DisplayName := Form4.Edit1.Text; //lIndex := Form2.ListBox1.ItemIndex; wozu? Form2.ListBox1.Items.Add(MeinArray[lIndex].DisplayName); end; |
Re: Probleme mit Listbox Einträgen
Danke, für den überarbeiteten code.
Allerdings wird immernoch der Fehler bei Bereichsprüfung immernoch angezeigt, und zwar:
Delphi-Quellcode:
Shellexecute ist auf Form2, genauso wie die listbox.
begin
if Err <=0 then ShowMessage(MeinArray[lIndex].RealFileName); //nur zur Kontrolle - lass ich das weg, geht der fehler eine zeile tiefer. ShellExecute(Application.Handle, 'open', Pchar(MeinArray[lIndex].RealFileName), NIL, NIL, SW_SHOWNORMAL); Auf Form 4 befindet sich das Editfeld, in dem der Alternativnamen eingegeben und in die Listbox geladen wird. Wenn man auf Ok klickt, wird halt der Code von Deddy H ausgeführt, der die Eingaben nach Form2 weiterleitet.Deswegen war eben von Form4 die rede, weil hier die ganzen befehle zum steueren der Listbox stattfinden. |
Re: Probleme mit Listbox Einträgen
Nochmal: lIndex ist nicht initialisiert!
|
Re: Probleme mit Listbox Einträgen
hm. komischerweise bekomme ich jetzt angezeigt das die nicht initialisiert wurde. eben hab ich die fehlermeldung nicht gehabt.... :?:
|
Re: Probleme mit Listbox Einträgen
*Piiiiiiiiiiiiiiieeeepppp*... *schnauf*
Tu uns beiden mal einen Gefallen und füge direkt hinter dem begin diese beiden Zeilen ein:
Delphi-Quellcode:
lIndex := Form2.ListBox1.ItemIndex;
if lIndex < 0 then exit; |
Re: Probleme mit Listbox Einträgen
hab ich auch schon versucht. bringt leider nichts, habs auch schon mit
Delphi-Quellcode:
versucht, ebenso wenig erfolg.
lIndex := Length(MeinArray);
|
Re: Probleme mit Listbox Einträgen
[OT]
Zitat:
[/OT] |
Re: Probleme mit Listbox Einträgen
[OT] Der *Piep*-Button sollte eigentlich ein Scherz sein, aber langsam könnte ich mich mit dem Gedanken anfreunden :mrgreen: [/OT]
[edit] @Johnny Bravo: nun nochmal im Ganzen die Methode zum Aufruf, damit wir endlich mal fertig werden [/edit] |
Re: Probleme mit Listbox Einträgen
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
function ShellExecuteErrMessage(int_Code: INTEGER): String; begin case int_code of 0: result := 'Zuwenig Speicher, ausführbare Datei war zerstört, Relokationswerte waren ungültig'; 2: result := 'Datei wurde nicht gefunden.'; 3: result := 'Verzeichnis wurde nicht gefunden.'; 5: result := 'Fehler beim gemeinsamen Zugriff auf eine Datei im Netz oder Fehler beim Zugriff auf eine gesperrte Datei im Netz.'; 6: result := 'Bibliothek forderte separate Datensegmente für jede Task an.'; 8: result := 'Zuwenig Speicher, um die Anwendung zu starten.'; 10: result := 'Falsche Windows-Version.'; 11: result := 'Ungültige ausführbare Datei. Entweder keine Windows-Anwendung oder Fehler in der EXE-Datei.'; 12: result := 'Anwendung für ein anderes Betriebssystem.'; 13: result := 'Anwendung für MS-DOS 4.0.'; 14: result := 'Typ der ausführbaren Datei unbekannt.'; 15: result := 'Versuch, eine Real-Mode-Anwendung (für eine frühere Windows-Version) zu laden.'; 16: result := 'Versuch, eine zweite Instanz einer ausführbaren Datei mit mehreren Datensegmenten die nicht als nur lesbar gekennzeichnet waren, zu laden.'; 19: result := 'Versuch, eine komprimierte ausführbare Datei zu laden.' + #13 + 'Die Datei muß dekomprimiert werden, bevor sie geladen werden kann.'; 20: result := 'Ungültige dynamische Linkbibliothek (DLL).' + #13 + 'Eine der DLLs, die benötigt wurde, um die Anwendung auszuführen, war beschädigt.'; else result := 'Ein Unbekannter Fehler ist aufgetreten. (' + IntToStr(int_code) + ')'; end; end; begin lIndex := Form2.ListBox1.ItemIndex; if lIndex < 0 then exit; if Err <=0 then begin ShowMessage(MeinArray[lIndex].RealFileName); //nur zur Kontrolle ShellExecute(Application.Handle, 'open', Pchar(MeinArray[lIndex].RealFileName), NIL, NIL, SW_SHOWNORMAL); end; if Err < 33 then Showmessage(ShellExecuteErrMessage(Err)); if CheckBox2.Checked then Application.Minimize; end; |
Re: Probleme mit Listbox Einträgen
Kannst Du mir mal erklären, wieso das schon wieder verkehrt herum da steht? Letzter Versuch:
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
function ShellExecuteErrMessage(int_Code: INTEGER): String; begin case int_code of 0: result := 'Zuwenig Speicher, ausführbare Datei war zerstört, Relokationswerte waren ungültig'; 2: result := 'Datei wurde nicht gefunden.'; 3: result := 'Verzeichnis wurde nicht gefunden.'; 5: result := 'Fehler beim gemeinsamen Zugriff auf eine Datei im Netz oder Fehler beim Zugriff auf eine gesperrte Datei im Netz.'; 6: result := 'Bibliothek forderte separate Datensegmente für jede Task an.'; 8: result := 'Zuwenig Speicher, um die Anwendung zu starten.'; 10: result := 'Falsche Windows-Version.'; 11: result := 'Ungültige ausführbare Datei. Entweder keine Windows-Anwendung oder Fehler in der EXE-Datei.'; 12: result := 'Anwendung für ein anderes Betriebssystem.'; 13: result := 'Anwendung für MS-DOS 4.0.'; 14: result := 'Typ der ausführbaren Datei unbekannt.'; 15: result := 'Versuch, eine Real-Mode-Anwendung (für eine frühere Windows-Version) zu laden.'; 16: result := 'Versuch, eine zweite Instanz einer ausführbaren Datei mit mehreren Datensegmenten die nicht als nur lesbar gekennzeichnet waren, zu laden.'; 19: result := 'Versuch, eine komprimierte ausführbare Datei zu laden.' + #13 + 'Die Datei muß dekomprimiert werden, bevor sie geladen werden kann.'; 20: result := 'Ungültige dynamische Linkbibliothek (DLL).' + #13 + 'Eine der DLLs, die benötigt wurde, um die Anwendung auszuführen, war beschädigt.'; else result := 'Ein Unbekannter Fehler ist aufgetreten. (' + IntToStr(int_code) + ')'; end; end; begin lIndex := ListBox1.ItemIndex; if lIndex < 0 then exit; //if Err <=0 then wo soll der Wert denn bitteschön herkommen? //begin ShowMessage(MeinArray[lIndex].RealFileName); //nur zur Kontrolle Err := ShellExecute(Application.Handle, 'open', Pchar(MeinArray[lIndex].RealFileName), NIL, NIL, SW_SHOWNORMAL); //end; if Err < 33 then Showmessage(ShellExecuteErrMessage(Err)); if CheckBox2.Checked then Application.Minimize; end; |
Re: Probleme mit Listbox Einträgen
das hatte ich eben testweise geschrieben, hab vergessen das zu löschen.
Es klappt leider immer noch nicht, die Showmessage bekomme ich auch nicht angezeigt... :wall: Danke für deine geduld und hilfsbereitschaft. |
Re: Probleme mit Listbox Einträgen
Hast Du mal einen Breakpoint gesetzt?
|
Re: Probleme mit Listbox Einträgen
Delphi-Quellcode:
da hab ich den breakpoint gesetzt, und da wird mir auch angezeigt das da etwas nicht stimmt.
[...]
Err := ShellExecute(Form2.Handle, [...} |
Re: Probleme mit Listbox Einträgen
Und wenn Du mal self.Handle einträgst?
|
Re: Probleme mit Listbox Einträgen
nichts.
self.Handle, Form2.Handle, und Application.Handle haben nichts gebracht.... |
Re: Probleme mit Listbox Einträgen
Was wird Dir denn angezeigt? Lass Dir doch nicht alles aus der Nase ziehen.
|
Re: Probleme mit Listbox Einträgen
Zitat:
|
Re: Probleme mit Listbox Einträgen
es wird dasselbe wie seit 2 seiten zuvor angezeigt: "Fehler bei Bereichsprüfung". bei
Delphi-Quellcode:
hab auch schon einfach nur
Err := ShellExecute(Form2.Handle,
Delphi-Quellcode:
versucht...ebenfalls ein schuß in den ofen, mit o.g. Fehlermeldung.
ShellExecute(Form2.Handle,
Dachte das hätte ich schon of genug geschrieben..... :mrgreen: EDIT: Mit Breakpoint hab ich eine ebenso "verständliche" fehlermeldung: "Quelltexthaltepunkt bei s0048C2F2 C:\Test.pas Zeile 157 Prozess Test.exe (2904)" |
Re: Probleme mit Listbox Einträgen
Wenn die Meldung kommt, bringt der Breakpoint sowieso nichts, da dieser nur beim Debuggen zur Geltung kommt.
|
Re: Probleme mit Listbox Einträgen
Mal 'ne kleine Erweiterung:
Delphi-Quellcode:
lIndex := ListBox1.ItemIndex;
if lIndex < 0 then exit; if lIndex > High(MeinArray) then ShowMessage('Da haben wirs'); |
Re: Probleme mit Listbox Einträgen
mit deinem code öffnet sich ein ShowMessage Fenster. Sobald ich auf Ok klicke, erscheint wieder ein Fenster mit der Fehlermeldung.
|
Re: Probleme mit Listbox Einträgen
Dann ist der lIndex größer, als die vorhandene Anzahl der Elemente im Array. "Vergisst" Du, dass Array (MeinArray) zu aktualisieren?
|
Re: Probleme mit Listbox Einträgen
Naja, zumindest wissen wir jetzt endlich, was es ist. Ich gehe jetzt gleich ins Bett, schauen wir morgen (nee, heute) Morgen nochmal drüber.
|
Re: Probleme mit Listbox Einträgen
Mach nicht so, als ob die halbe DP einbricht, wenn Du ins Bett musst :tongue:
|
Re: Probleme mit Listbox Einträgen
Jungs,ich danke euch für eure geduld und für eure hilfe, hoffe ihr seid mir nicht böse :cyclops:
Ich arbeite zum ersten mal mit einem Array und habe nicht die geringste ahnung wie ich das tun soll. :| |
Re: Probleme mit Listbox Einträgen
[OT] Manuel, *piep* mich am *piep*, Du *piep* :tongue: [/OT]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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