AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme mit Listbox Einträgen

Ein Thema von Johnny Bravo · begonnen am 18. Jun 2008 · letzter Beitrag vom 2. Jul 2008
Antwort Antwort
Seite 3 von 12     123 45     Letzte » 
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#21

Re: Probleme mit Listbox Einträgen

  Alt 20. Jun 2008, 20:15
Moment, die Items sind doch schon in der Listbox enthalten, oder? Dann ist die ganze Passage
Zitat:
Delphi-Quellcode:
  if OpenDialog1.Execute() then // wenn ich hier die 1 entferne, und oben ebenfalls, gibts wieder einen Laufzeitfehler.
  begin
    lIndex := Length(MeinArray);
    Form4.Show; // Das ist das 2te Formular, in der man den ALternativnamen eingibt.
    SetLength(MeinArray, lIndex + 1);
    MeinArray[lIndex].RealFileName := OpenDialog1.FileName;
    MeinArray[lIndex].DisplayName := Form4.Edit1.Text;
    ListBox1.Items.Add(MeinArray[lIndex].DisplayName);
  end;
doch Grütze, da Du hier wieder den OpenDialog aufrufst und das Item hinzufügst. Außerdem fehlt hiervor irgendwie ein Aufruf von ShellExecute.
Zitat:
Delphi-Quellcode:
  if Err <= 32 then
      Showmessage(ShellExecuteErrMessage(Err));
Err ist gar nicht initialisiert, was soll denn da kommen? Das soll doch den Rückgabewert von ShellExecute aufnehmen, oder täusche ich mich?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Johnny Bravo

Registriert seit: 7. Jun 2008
75 Beiträge
 
#22

Re: Probleme mit Listbox Einträgen

  Alt 20. Jun 2008, 21:31
Hi,
hab die fehler beseitigt und den richtigen code hier:
Irgendwie komm ich heute auf keinen grünen zweig. Lauter Fehler die man eigentlich sofort sehen sollte..


das ist der befehl, die Datei aus dem array zu starten - es passiert jedoch nichts, keine fehlermeldung, rein gar nichts.
Delphi-Quellcode:
begin
  if Err = 0 then
      ShellExecute (Form2.Handle,
      'open',
      Pchar('MeinArray[lIndex].RealFileName'),
      NIL,
      NIL,
      SW_SHOWNORMAL);

das ist die prozedur die datei aus dem Opendialog in die Listbox zu ladenüberarbeitet)

Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
    var IconIndex : Integer;
    h : hIcon;
    S : String;
    Icon : TIcon;
    Bitmap : TBitmap;
    OpenDialog : TOpenDialog;
    lIndex: Integer;


    begin
         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);
         Form2.ListBox1.MultiSelect :=False;
         Form2.ListBox1.Sorted :=True;
         Form2.Label2.Caption := OpenDialog.FileName;
         Icon := TIcon.Create;
         IconIndex := 0;
         S := OpenDialog.FileName;
         h := IconFromFile(OpenDialog.FileName,0);
         Form2.ImageList1.AddIcon (Icon);

       try
          Form2.ImageList1.GetIcon(0, Icon);
          Form2.Image1.Canvas.Draw(0, 0, Icon);

      with
          Form2.Image1.Canvas Do
          DrawIconEx(Handle, 0, 0,h, 32, 32, 0, Brush.Handle, di_Normal);

      begin
          Form4.Close;
          Edit1.Clear;

          end;

        finally
          FreeAndNil(Icon);
     end;
   end;
wie gesagt,sobald ein eintrag in der Listbox drin ist, und gestartet werden soll, passiert nichts, aber auch rein gar nichts.

EDIT: Habs schon mit Application.Handle und SW_NORMAL versucht, ohne erfolg.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#23

Re: Probleme mit Listbox Einträgen

  Alt 20. Jun 2008, 21:35
Schonmal den Rückgabewert von ShellExecute anzeigen lassen?
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#24

Re: Probleme mit Listbox Einträgen

  Alt 20. Jun 2008, 21:39
Wie wäre es denn so?
Delphi-Quellcode:
Err := ShellExecute(Form2.Handle,
      'open',
      Pchar('MeinArray[lIndex].RealFileName'),
      NIL,
      NIL,
      SW_SHOWNORMAL);
  if Err < 33 then
    Showmessage(ShellExecuteErrMessage(Err));
[edit] Nimm mal die Hochkommata im 3. Parameter raus:
Delphi-Quellcode:
Pchar('MeinArray[lIndex].RealFileName')
--> Pchar(MeinArray[lIndex].RealFileName)
[/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Johnny Bravo

Registriert seit: 7. Jun 2008
75 Beiträge
 
#25

Re: Probleme mit Listbox Einträgen

  Alt 20. Jun 2008, 22:16
Zitat von DeddyH:
Wie wäre es denn so?
Delphi-Quellcode:
Err := ShellExecute(Form2.Handle,
      'open',
      Pchar('MeinArray[lIndex].RealFileName'),
      NIL,
      NIL,
      SW_SHOWNORMAL);
  if Err < 33 then
    Showmessage(ShellExecuteErrMessage(Err));
damit bekomme ich ERangeError "Fehler bei der Bereichsprüfung".
Der fehler wird bei Err := ShellExecute(Form2.Handle, angezeigt.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#26

Re: Probleme mit Listbox Einträgen

  Alt 20. Jun 2008, 22:19
Siehe Deddys Edit. Hätte ich auch drauf kommen können
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Johnny Bravo

Registriert seit: 7. Jun 2008
75 Beiträge
 
#27

Re: Probleme mit Listbox Einträgen

  Alt 21. Jun 2008, 12:10
Hab ich ganz vergessen zu erwähnen, das hab ich schon ausprobiert. Es passiert nichts.

EDIT:

wenn ich shellexecute so umschreibe, bekomme ich wieder "Fehler bei der Bereichsprüfung":

Delphi-Quellcode:
begin
 Err:= ShellExecute (0,
               NIL,
               NIL,
               'open',
               PChar(MeinArray[lIndex].RealFileName),
               SW_SHOWNORMAL);
mach ich es jedoch mit Hochkomma, wird der aktuelle Projektordner im Explorer geöffnet, schonmal etwas....aber wieso gerade der Projektordner?

ich verstehe nicht woran es liegen könnte.....
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#28

Re: Probleme mit Listbox Einträgen

  Alt 21. Jun 2008, 12:38
Dann lass Dir MeinArray[lIndex].RealFileName doch mal mit ShowMessage ausgeben, irgendwas in Richtung falscher Eintrag wird es ja vermutlich sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Johnny Bravo

Registriert seit: 7. Jun 2008
75 Beiträge
 
#29

Re: Probleme mit Listbox Einträgen

  Alt 21. Jun 2008, 19:39
also, wenn ich ShellExecute so aufrufe, mit einem Absoluten Pfad, funktionert es.

Delphi-Quellcode:
 if Err = 0 then
      ShellExecute (Form2.Handle,
      'open',
      Pchar('C:\Windows\Notepad.exe'), //zB.
      Nil,
      Nil,
      SW_NORMAL);

Hat das vielleicht damit zutun, das ich 2 Formulare nutze, und in beiden sind die variablen für das Array definiert? Weil ich muss ja die daten aus dem 2ten Formular (Edit) ins 1te Formular einfügen (Listbox)

In beiden Formularen sind die Typen deklariert:
Delphi-Quellcode:
type
    TFilenameInfos = record
    RealFileName: String;
    DisplayName: String;
    end;
in Form2 siehts so aus, um den Namen aus dem Editfeld in die Listbox in Formular 1 einzufü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
         Form2.ImageList1.GetIcon(0, Icon);
         Form2.Image1.Canvas.Draw(0, 0, Icon);
         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);
         Form2.ListBox1.MultiSelect :=False;
         Form2.ListBox1.Sorted :=True;
         Form2.Label2.Caption := Form4.Edit1.Text;
         Icon := TIcon.Create;
         IconIndex := 0;
         S := OpenDialog.FileName;
         h := IconFromFile(OpenDialog.FileName,0);
         Form2.ImageList1.AddIcon (Icon);

      with
          Form2.Image1.Canvas Do
          DrawIconEx(Handle, 0, 0,h, 32, 32, 0, Brush.Handle, di_Normal);
      begin
          Form4.Close;
          Edit1.Clear;
          FreeAndNil(Icon);
          end;
     end;
das ist dann der ablauf von Shellexecute, um einen Eintrag der Listbox in Formular 1 zu starten:
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
     
  if Err = 0 then
      ShellExecute (Form2.Handle,
      'open',
      Pchar('MeinArray[lIndex].RealFileName'), // absoluter Pfad funktioniert, nur ein Eintrag aus dem Array nicht....
      Nil,
      Nil,
      SW_NORMAL);

  if Err <= 32 then
      Showmessage(ShellExecuteErrMessage(Err));
end;


Aber wieso wird nicht MeinArray[lIndex].RealFileName geladen wenn ich das da einfüge?
Ich weiß nicht wo ich nach dem fehler suchen soll....
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#30

Re: Probleme mit Listbox Einträgen

  Alt 21. Jun 2008, 19:42
Hast Du denn mal gemacht, was ich Dir geraten habe? Pchar('MeinArray[lIndex].RealFileName') ist Quatsch, die Hochkommata müssen da raus. Und lass Dir mal den Eintrag ausgeben (ShowMessage), dann siehst Du sofort, ob das passt. 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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 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