| |
|
|
- Seite 1 - |
|
GDL | Hi Profaner,
habe das Problem,dass Programme welche Startpaint Endpaint,oder sendkey nutzen auf meinem alten 1GHz Board einwandfrei gehen,aber auf meinem neuen 2,6 GHz Board nicht mehr.
Startpaint Endpaint geht nur mehr im Interpretermodus.Als Exe Datei nur noch dann, wenn hinter jedem Endpaint ein Waitinput folgt.Selbst bei einem Sleep 1000 hinter Endpaint blitzen nur Bruchteile des Textes kurz auf,bevor die Programmunterbrechung eintritt.
sendkey(xyz&,13) Sendkey funktioniert nur dann, wenn gleich darauf ein Sleep 200 folgt. Ohne dem sleep Befehl wird sendkey einfach nicht ausgeführt.
Habe 2,6 GHz Intel CeleronD Board mit 510 MB RAM WindowsME und XProfan 8.0.
Hatte jemand schon ähnliche Probleme?
Mit freundlichen Grüßen Georg Dankesreiter |
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
GDL | Hi If
Danke für den Tip.Da aber der Anwender den Text bestimmt müsste ich die Stringvariable vorher erst in eine BMP Datei umwandeln. Das ganze Programm(dBase Dateigenerator mit kleiner Programieroberfläche) entstand eigentlich nur,weil ich aus Dir bekannten Grund meine kompletten Programme neu schreiben muss.Da mir dabei einige Profaner geholfen haben den Dateigenerator hinzukriegen,wollte ich diesen nun als Freeware für Anfänger(aber nur für hiesige Mitglieder und nur auf Dein Forum beschränkt) anbieten.
Das der Dateigenerator als EXE bei einer Staticsorte nicht geht,habe ich erst bemerkt als ich das Installationspacket zum Hochladen herrichtete und nochmals vorher Durchtestete.
Vielleicht liegt der Fehler auch in einem anderen Programmteil,den der Interpreter ignoriert und der Compiler nicht.Graue Statics lassen sich komischerweise anstandslos beschriften. Eines kann ich aber jetzt 100%ig ausschließen,an dem neuen Board liegts nicht.Auf dem alten Board hatte das Programm noch keine weißen Statics und jetzige Version läuft auch auf dem alten Board nicht richtig.
Löse jetzt betreffende Zeilen aus dem Gesamtcode und schaue was dann passiert.Rolf hat mir auch was zum Testen geschickt,nochmals ne Chance.
Vielleicht kriege ich auch mal was Vernünftiges auf die Beine.
Mit freundlichen Grüßen aus dem noch verschneiten Niederbayern Georg |
|
|
| |
|
|
|
GDL | Hi If,
kopiere hier einfach die Nachricht an Rolf
Hi Rolf
legte eine Nachtschicht ein,da mir dies Ding keine Ruhe ließ. Habe es jetzt gelöst.
Habe deinen Code einfach Stück für Stück zerlegt,dabei kam folgendes raus:
declare test& proc schrift startpaint test& UseFont COURIER,0,12,0,0,0 drawtext 1,1,Test endpaint endproc cls test&=Control(STATIC,Test,$54001006,200,20,100,20,%hwnd,0, %hInstance,$0) schrift schrift waitkey
Bei einmaligen Aufruf der Procedure Schrift habe ich gleiches altes Problem. Da aber Du in Deinem Beispiel die Procedure mehrmals Durchlaufen läßt,habe ich die Proc. einfach mal zweimal hintereinander aufgerufen. Wenn ich es auch nicht verstehe,aber dann gings auf einmal.
Nun lasse ich in meinem Programm Startpaint Endpaint auch mehrmals Durchlaufen und es geht auch.
declare hg% whilenot hg% > 2 startpaint objekt&[num%] UseFont COURIER,0,12,0,0,0 drawtext 1,1,objekt$[num%] endpaint inc hg% wend
Ohne Deinen Code wäre ich niemals auf die Idee gekommen Startpaint Endpaint mehrmals hintereinander aufzurufen.Nochmals Danke.
Eine letzte Bitte hätte ich noch,könnte mir jemand erklären warum dies so ist,oder ob dies nur unter WinME so ist.
Also nochmals Euch beiden ein großes Dankeschön.
Mit freundlichen Grüßen Georg
Für If
Wenn nichts dagegenspricht würde ich das Prog. nochmals durchsehen und auf die Gefahr hin,dass es auf anderen Win.Versionen ausser ME nicht läuft Dir zukommen lassen.Ich möchte es jetzt doch nicht mehr unangesehen auf die Mitglieder loslassen. |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
| Es spricht wohl nichts dagegen.
Salve, iF |
|
|
| |
|
|
|
GDL | Hi If
meine Anwendung nutzt ein paar Includedateien von Prfellow.Prfellow ist zwar Freeware,aber dürfen nur Includedateien auch weitergegeben werden?Wenn nicht dann lösche ich diese aus dem Verzeichnis und Du musst diese dann manuell aus Prfellow einfügen.Thomas Hölzer kann man ja leider nicht mehr anfragen.
Mit freundlichen Grüßen Georg |
|
|
| |
|
|
|
| Ich glaube nicht das er etwas dagegen hätte. Es dient ja dem Zweck und ernannt wird er ja auch.
Salve, iF |
|
|
| |
|
|
|
| Hallo Georg...
Profan verarbeitet Messages im Interpretermodus nach jeder Zeile, in der EXE nur nach jeder zwanzigsten Zeile (mehr Geschwindigkeit) => deshalb die Unterschiede. Wenn du mit Starpaint / Endpaint arbeitest, muß sowieso immer ein Repaint her, so wie du das ja schon erkannt hast. |
|
|
| |
|
|
|
GDL | Hi Andreas
Schön langsam kommt man auf die Kniffe.Falls If das Prog.für erwähnenswert hält,möchte ich es hier downloadbar machen.Da du mir vorher auch schon geholfen hast,bist du auch im Startdialog erwähnt. Wenn du dies nicht möchtest,sage if er soll es noch nicht bereitstellen.
Mit freundlichen Grüßen Georg |
|
|
| |
|
|
|
| Ich kann nur sagen das ich das Prog noch nicht durchexaminiert habe. Das typsiche warum weshalb wieso-Syndrom ist noch am werkeln. Wenn ichs geblickt habe dann poste ich es gerne - es ist schließlich ein beträchtliches Stück Arbeit - respekt!
Salve, iF |
|
|
| |
|
|
|
| Hallo Georg...
[quote:466d42be0b] Wenn du dies nicht möchtest,sage if er soll es noch nicht bereitstellen. [/quote:466d42be0b] Das bleibt dir überlassen.
Über die Probleme mit dem Messagehandling kann man sehr leicht stolpern: Profan fängt Messages ab, um z.B. die profaneigenen Systemvariablen (u.a. %MENUITEM) zu setzen. %MENUITEM ist eigentlich auch nichts anderes als der Rückgabewert einer Message (oder viel besser noch eine Kombination aus meheren Messagerückgaben). Im Interpreter verarbeitet Profan die Messages nach jeder Zeile, in der compilierten EXE dagegen nach jeder 20.Zeile. Bevor Windows also die Info bekommt, daß eventuell etwas neugezeichnet werden muß, kann das Programm schon zwanzig Zeilen weiter sein. Auffällig wird das in der Regel aber nur an Stellen, an denen Programmabschnitte vorkommen, die längere Zeit in Anspruch nehmen (ADDFILES,PLAYSOUND,Sleep...).
Hier mal was ganz einfaches als Beispiel: KompilierenMarkierenSeparieren Wenn du den Code zur EXE compilierst, wirst du feststellen, daß die Listbox erst gezeichnet wird, wenn die 10 Sekunden Sleepzeit verstrichen sind.
Jetzt probier mal das: KompilierenMarkierenSeparieren Oder auch mal das: KompilierenMarkierenSeparierenWindowStyle 31
Windowtitle "Messagehandling in Profan"
Window 0,0-640,400
Declare Listbox&
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
REM
LET LISTBOX&=@CREATELISTBOX(%HWND,"",20,20,300,300)
REM
REM
@ADDSTRING(LISTBOX&,"Vor Sleep")
Beep 1
Sleep 10000
@ADDSTRING(LISTBOX&,"Nach Sleep")
While @equ(0,0)
Waitinput
Wend
Messages werden u.a. nach einem Waitinput verarbeitet => deshalb IFs Vorschlag mit dem Timer. Ich hoffe, ich konnte dir etwas mehr Durchblick durch die Sache verschaffen - ist auch für etwas erfahrenere Leute schwer zu durchschauen... |
|
|
| |
|
|
|
GDL | Hi Andreas
toll,das ihr alle mir helft.Möchte nicht einfach blind alles übernehmen,sondern möglichst viel lernen an solchen Sachen,die eigentlich kein Fehler sind.Werde Euch bestimmt weiter mit banalen Fragen beschäftigen.
Mit freundlichen Grüßen Georg Dankesreiter |
|
|
| |
|
|
|
| Genau dafür ist diese Community da.
Salve, iF |
|
|
| |
|
|
|
| |
|
| |
|
|