AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

editbox Text aus Listbox beziehen

Ein Thema von Serpentine · begonnen am 2. Mai 2008 · letzter Beitrag vom 2. Mai 2008
Antwort Antwort
Seite 1 von 3  1 23      
Serpentine

Registriert seit: 1. Sep 2007
32 Beiträge
 
Delphi 2005 Personal
 
#1

editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 11:53
Hi ich habe ein Programm geschrieben, was beim starten eine listbox aus einer datei lädt und den darin enthaltenen Text in eine Editbox übergibt.
Beim starten des Programms erhalte ich aber den Fehler dass der Listenindex überschritten wird.
Ich kann mir das gar nicht erklären und bitte um Hilfe^^

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Button1: TButton;
    XPManifest1: TXPManifest;
    Button2: TButton;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    ListBox2: TListBox;
    procedure FormDestroy(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  type
feldtyp = array[0..5000] of integer;

var
  Form1: TForm1;
  f:feldtyp;
  index:integer;



implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
index:=0;
if fileexists(edit2.text+'.array') then
listbox1.items.loadfromfile(edit2.text+'.array');
if fileexists('settings.ini') then
listbox2.items.loadfromfile('settings.ini');
edit2.Text:=listbox2.items.strings[listbox2.itemindex];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
f[index]:=strtoint(edit1.text);
listbox1.items.add(edit1.Text);
edit1.text:='';
label1.caption:='Bis jetzt wurden '+inttostr(index+1)+' Zahlen aufgenommen.';
index:=index+1;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
a,i,j:integer;
begin
for i:=1 to index do
begin
     for j:= index downto i do
     begin
          if f[j] < f[j-1] then
          begin
               a := f[j-1];
               f[j-1] :=f[j];
               f[j] := a;
          end;
     end;
end;
listbox1.Items.clear;
for i:=1 to index do begin
listbox1.items.add(inttostr(f[i]));
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
listbox1.items.Clear;
label1.caption:='Bis jetzt wurden 0 Zahlen aufgenommen.';
index:=0;
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
edit2.Text:='';
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
listbox1.Items.savetofile(edit2.Text+'.array');
listbox2.Items.clear;
listbox2.Items.add(edit2.Text);
listbox2.items.SaveToFile('settings.ini');
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#2

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 12:02
Hallo und Willkommen in der DP ,
versuch es mal so:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  index:=0;
  if fileexists(edit2.text+'.array') then
    listbox1.items.loadfromfile(edit2.text+'.array');
  if fileexists('settings.ini') then
    begin
      listbox2.items.loadfromfile('settings.ini');
      if Listbox2.Items.Count > 0 then
        edit2.Text:=listbox2.items[0];
    end;
end;
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
Serpentine

Registriert seit: 1. Sep 2007
32 Beiträge
 
Delphi 2005 Personal
 
#3

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 12:32
Vielen dank für deine Hilfe^^ aber das Probleme habe ich schon gelöst, war ja auch nicht so schwer. Dafür habe ich jetzt ein neues.
Ich möchte ein Feld aus einer Datei laden. Das Feld soll in der Listbox erscheinen und auch im Array abgespeichert werden, sodass man damit arbeiten kann. Sprich das Feld Sortieren.
Wenn ich das Feld lade dann wird es in der Listbox korrekt angezeigt aber im Array nicht richtig abgespeichert.

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
begin
index:=1;
opendialog1.execute;
listbox1.Items.LoadFromFile(opendialog1.FileName);
for i:=1 to listbox1.items.count do begin
f[i]:=strtoint(listbox1.items.Strings[i-1]);
end;
label1.caption:='Bis jetzt wurden '+inttostr(listbox1.Items.count)+ ' Zahlen aufgenommen.';
end;
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 12:35
Hallo,

wie ist denn f definiert ?

Wie sieht f nach der Ziele label1.caption aus ?
Falls es ein array of String ist,
fehlt ein SetLength.

F5, F7, F8 kennst du ?


Zur Einrückunh.


Delphi-Quellcode:
for i:=0 to listbox1.items.count-1 do
begin
  f[i+1]:=strtoint(listbox1.items.Strings[i]);
end;
Normlerweise schreibt man immer := 0 to Count-1


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#5

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 12:38
Drei Dinge hab ich nicht ganz verstanden:
- Du solltest prüfen, ob der Opendialog auch ausgeführt und nicht abgebrochen wurde:if opendialog1.execute then... - die Listbox wird sortiert (sorted := true), aber das Array nicht? Dann musst Du Dir eine eigene Sortierroutine schreiben.
- Nimm doch besser eine TList statt des Arrays, da gibt es bereits eine Sort-Methode. Außerdem bist Du in der Größe nicht so eingeschränkt wie bei einem statischen Array.
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
Serpentine

Registriert seit: 1. Sep 2007
32 Beiträge
 
Delphi 2005 Personal
 
#6

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 12:52
Ich habe eine eigene Sortierroutine^^
Mh ich denke ich werde mal den kompletten Quellcode posten zum Besseren Verständnis.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Edit1: TEdit;
    Button1: TButton;
    XPManifest1: TXPManifest;
    Button2: TButton;
    Label1: TLabel;
    Button3: TButton;
    Label2: TLabel;
    Edit2: TEdit;
    ListBox2: TListBox;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    procedure Button4Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Edit2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  type
feldtyp = array[0..5000] of integer;

var
  Form1: TForm1;
  f:feldtyp;
  index:integer;



implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
index:=1;
if fileexists('settings.ini') then begin
listbox2.items.loadfromfile('settings.ini');
edit2.Text:=listbox2.items.strings[0];
end;
if fileexists(edit2.text+'.array') then
listbox1.items.loadfromfile(edit2.text+'.array');
label1.caption:='Bis jetzt wurden '+inttostr(listbox1.Items.count)+ ' Zahlen aufgenommen.';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
f[index]:=strtoint(edit1.text);
listbox1.items.add(edit1.Text);
edit1.text:='';
label1.caption:='Bis jetzt wurden '+inttostr(listbox1.Items.count)+ ' Zahlen aufgenommen.';
index:=index+1;
form1.caption:='Bubblesort - Zahlen aufnehmen';
end;

procedure TForm1.Button2Click(Sender: TObject);
var
a,i,j:integer;
begin
for i:=1 to index-1 do
begin
     for j:= index downto i do
     begin
          if f[j] < f[j-1] then
          begin
               a := f[j-1];
               f[j-1] :=f[j];
               f[j] := a;
          end;
     end;
end;
listbox1.Items.clear;
for i:=2 to index do begin
listbox1.items.add(inttostr(f[i]));
end;
form1.caption:='Bubblesort - Zahlen Sortiert';
label1.caption:='Bis jetzt wurden '+inttostr(listbox1.Items.count)+ ' Zahlen aufgenommen.';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
listbox1.items.Clear;
label1.caption:='Bis jetzt wurden '+inttostr(listbox1.Items.count)+ ' Zahlen aufgenommen.';
index:=1;
form1.caption:='Bubblesort - Bereit';
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
edit2.Text:='';
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
listbox1.Items.savetofile(edit2.Text+'.array');
listbox2.Items.clear;
listbox2.Items.add(edit2.Text);
listbox2.items.SaveToFile('settings.ini');
end;

procedure TForm1.Button4Click(Sender: TObject);
var
i:integer;
begin
index:=1;
if
opendialog1.execute then
listbox1.Items.LoadFromFile(opendialog1.FileName);
else begin
opendialog1.execute;
listbox1.Items.LoadFromFile(opendialog1.FileName);
end;
for i:=0 to listbox1.items.count-1 do
begin
  f[i+1]:=strtoint(listbox1.items.Strings[i]);
end;
label1.caption:='Bis jetzt wurden '+inttostr(listbox1.Items.count)+ ' Zahlen aufgenommen.';
end;

end.
Ich hoffe ihr könnt mir nun besser weiterhelfen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#7

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 12:57
Ich komm mit Deinem Index nicht klar, wenn ich ehrlich bin.
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
Serpentine

Registriert seit: 1. Sep 2007
32 Beiträge
 
Delphi 2005 Personal
 
#8

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 13:03
die variable index ist das selbe wie listbox1.items.count nur halt von dem array^^
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#9

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 13:05
Dein Array beginnt aber bei Index 0. Das erste Element wird somit nie angesprochen, wenn ich das richtig gesehen habe.
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
Serpentine

Registriert seit: 1. Sep 2007
32 Beiträge
 
Delphi 2005 Personal
 
#10

Re: editbox Text aus Listbox beziehen

  Alt 2. Mai 2008, 13:12
stimmt aber ich denke nicht dass es daran liegt oder?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:50 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