AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Nochmal Lagersimulation
Thema durchsuchen
Ansicht
Themen-Optionen

Nochmal Lagersimulation

Ein Thema von DeiDextra · begonnen am 5. Jun 2009 · letzter Beitrag vom 8. Jun 2009
Antwort Antwort
DeiDextra

Registriert seit: 3. Jun 2009
2 Beiträge
 
#1

Nochmal Lagersimulation

  Alt 5. Jun 2009, 14:11
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
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Nochmal Lagersimulation

  Alt 5. Jun 2009, 15:47
Hallo Dextra,

einmal abgesehen von der Unübersichtlichkeit Deines Sourcetextes, etwas formatieren hilft auch die Logik darzustellen, sieht die Fehlermeldung so aus als wäre das closefile(lst) vor einem writeln(lst,...) aufgerufen worden.

wenn Du
Delphi-Quellcode:
assignfile(lst, 'aaa.lst');
rewrite(lst);
an den Anfanfg der procedure stellst, dann sollte das
closefile(lst); auch am Ende stehen.

Gruß
K-H
  Mit Zitat antworten Zitat
Patrick L.

Registriert seit: 22. Mär 2009
10 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Nochmal Lagersimulation

  Alt 5. Jun 2009, 18:08
Benutze lieber das MouseDown-Ereigniss des Objekts, dieses liefert die X und Y Werte des Clicks auf dem Image gleich mit. 8)

Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
...
end;
Patrick
  Mit Zitat antworten Zitat
DeiDextra

Registriert seit: 3. Jun 2009
2 Beiträge
 
#4

Re: Nochmal Lagersimulation

  Alt 8. Jun 2009, 14:14
Besten dank für die Antworten.

das Problem mit der File hat irgendwie nicht hingehauen. selbst wenn ichs ganz ans ende der Procedure geschrieben habe.
hab das ganze rausgehauen.

Die wege von Delphi scheinen unergründlich zu sein.
  Mit Zitat antworten Zitat
Antwort Antwort


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:28 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