Hallo zusammen,
Mein allererster Beitrag heute
hab gleich mal ein schwieriges Problem für euch!
mir selber raucht der Kopf. ich bin grad total am Ende, hab einfach keine Idee mehr, wie ich den fehler weg bekomme.
vielleicht könnt ihr mir helfen?!
Es geht um folgendes:
Wir programmieren im Team eine Lagersimulation. Meine Aufgabe im Moment ist die grafische Aufarbeitung. ich habe bereits 2 Images erstellt. In dem linken wird das gesamte Lager aus der Vogelperspektive angezeit. Nach einem Klick auf eine Lagerfläche, die in dem Image angezeigt werden, öffnet sich ein neues Imagefeld, in dem die Lagerfläche von vorne angezeigt wird. Man soll also die einzelnen regalflächen anschauen können.
soweit so gut. tut auch alles ganz gut.
jetzt mein Problem:
Ich möchte gerne durch einen Kick auf eine Ware in der Regalfläche Inoformationen über diese Ware angezeigt haben. Das klappt auch einigermaßen.
Allerdings wenn man 2 mal neben ein Regal klickt, kommt anstatt meiner programmierten fehlermeldung : "Regalfläche nicht gefunden. Bitte erneut klicken."
ein E/A Fehler 32.
edit: Nach dem Fehler springt der Cursor in die line wo rewrite(lst) steht. aber warum bloß.
Weiß jemand warum ich diesen fehler bekomme!?
Hier die Procedure:
Delphi-Quellcode:
procedure TForm1.Image2Click(Sender: TObject);
var i,ii, zae, k, x_anf,y_anf, x_max,y_max, // alte Eckpunke
x_h,y_h, x,y: integer; found: boolean;
p:inhn; ts: array[1..8] of string;
begin
assignfile(lst, 'aaa.lst');
rewrite(lst);
x_anf:= 150;
y_anf:= 50;
x_max:= x_anf + 150; // .. meter
y_max:= y_anf + 50; // .. meter
x_h:= form1.image2.Left;
y_h:= form1.image2.Top;
x:= mouse.CursorPos.x-x_h ; // - x_h -4 ; {tpoint}
y:= mouse.CursorPos.y - y_h ; // -y_h -30; // woher 4 und 30 kommen, ist unklar. pereufen
if debuglevel>3 then showmessage(' Doppelklick im Regal auf den Punkt '+ inttostr(x) + ' ' + inttostr(y));
found:= false;
for i:= 0 to 6 do
with form1.image2.canvas do
begin
if (x_anf<=x) and (x<=x_max) and (y_anf<= y) and (y_anf +50 >= y) then
begin
k:= 6- i;
kglob:=k;
if debuglevel=0 then showmessage ('Gefunden Doppelklick auf regalflaeche' +inttostr(k) );
found:=true;
writeln(lst,iglob);
writeln(lst,jglob);
writeln(lst,kglob);
for ii:= 1 to 8 do ts[ii]:= ' ';
zae:=1;
p:=ar[iglob,jglob].inh[kglob].wa; // vorher dreier
for ii:= 1 to 8 do
if p[ii].warenr>0 then
begin
{ ts[ii]:= 'warenr:' + inttostr(p[ii].warenr) + ' ' +'datum_einlager:'+inttostr(p[ii].datum_einlager)+ ' ' +
'Anzplatten:' +inttostr(p[ii].Anzahl_platten) +' ' + 'hoehe:' +inttostr(p[ii].hoehe)+ ' ' +
'gewicht:' +inttostr(p[ii].gewicht) +' ' + 'breite:' + inttostr(p[ii].breite)+ ' ' +
'Laenge' + inttostr(p[ii].laenge)+ ' ' ; }
label11.caption:= inttostr(p[ii].warenr);
end ;
for ii:=1 to 8 do
writeln(lst, ts[ii]);
closefile(lst);
//form3.show;
// hier weiter
end;
y_anf:= y_anf +50 ;
end;
if not(found) then
showmessage( 'Leider das Regalfach nicht gefunden. Nochmal klicken!');
//showmessage ('Doppelklick auf Einzelregal ');
end; // proc
Ich hoffe ihr könnt mir helfen!
Vielen Dank schon mal.
gruß
Dextra