Autor | Thema: Bereits angschnitten | | Datum:07.05.02 16:08 
| |
Es wurde hier das Thema schon etwas angeschnitten das nicht alle Befehle auf jeden Rechner funkioren (Befehle die in Profan nicht mit einer api aufgerufen werden laufen nicht auf allen rechner)
Warum ist das so. zudem akm man zum entschluss das aber eine funktionalität mit der entsprechenden Api herbeigeführt werden kann. Greift aber Profan nicht auf diese Apis zurück , sonder wie macht sie die Befehle verfügbar....
|
| | Datum:08.05.02 08:46 
(mrk@mrk-soft.de) | |
Hallo Mathias,
Die Frage ist irgendwie seltsamm gestellt. Warum etwas auf
Rechner A funktioniert und Rechner B nicht, ist die einfache
Tatsache, das es an den Versionen von Windows liegt, die sich
grundsätzlich in NT und "Home Bereich" aufteilen.
Unter Homebereich zählt Windows 95 / Windows 98 / Windows ME,
der NT Bereich ist mit Windows NT / Windows 2000 und Windows XP
bestückt.
Und um es ganz einfach auf dem Punkt zu bringen:
Windows NT und Windows "Home" unterscheiden sich konsequent
von der Technik her, das hat auch zur folge, das nicht alle
Api Funktionen von NT und "Home" gleich sind, bzw. sogar
existieren. Mehr ist das nicht ....
Profan hat damit nichts zu tun und kann nur das nutzen, was
das Betriebssystem auf dem jeweiligen Rechner zur verfügung
stellt. Frag mal ehr "Mikimaus-Soft", warum es API Unterschiede
zwischen NT und "Home" gibt. !!!
Und einige User benutzen ebend hier nicht Windows 95 / 98
oder gar ME, sonden haben Windows XP oder 2000 Installiert.
Thorsten
|
| | Datum:08.05.02 16:28 
| |
Nein ich meine das eher in der Hinsicht, das Funktionen, die in profan nicht mit einer api abgerufen werde muss, zwar während der Entwicklung und dem erstellen der exe auf win98 problemlos laufen, aber anschließend auf einen anderen rechner, die ebenfalls win98 verwendet, die funktion verweigern und nicht ausführt.Stellt man hingegen auf api um, läuft alles ohne probleme....
|
| | Datum:08.05.02 17:23 
(rgh-soft@t-online.de) | |
Vieleicht wäre es hilfreich wenn Du diese Funktionen mal beim Namen nennst. Welcher Befehl oder welche Funktion funktioniert bei Dir auf verschiedenen Rechnern unterschiedlich?
Mir sind derartige Dinge bislang nicht bekannt.
Gruß
Roland
|
| | Datum:09.05.02 14:50 
| |
Einma ist das ganze bei SetCheck zu erkennen:
Auf meinen Pc verläuft der Aufruf ohne Probleme (SetCheck N1,N2), auf einen anderen pc mit gleichen betriebssystem spuckt es hässliche fehlermeldungen aus (beim ersten Starten) oder reagiert überhaupt nicht beim namen (ab den zweiten starten der exe). Greift man hier auf die funktion sendmessegae so kalppt es bei beiden ohne Probleme.
Weiterhin ist das bei findwindow zu beobachten:
die funktion findwindow klappt bei mir ohne Zwischenfälle, auf dem anderen pc keine Reaktion, stellt man hingegen auf api um (sieh Forum) kommt es auf meinen pc zu keiner ausführung jedoch beim anderen pc zu keinerlei problemen (0).
Zudem auch Winexe:
Winexe spuckt bei mir egal was ich mache den gleichen Fehler aus, egal ob die datei gelöscht wurde, der pfad nicht stimmt, die datei beschädigt ist oder gezippt ist, egal ob bereits eion zugriff besteht oder ob sie eine fehlerhafte exentyp darstellt, immer wird mir angezgeigt, das die datei nicht vorhanden ist. Ist die Datei original wird sie geladen, doch vorher IMMER angezigt das die Datei nicht vorhanden wäre, am anderen pc erscheitn hingegen keinerlei fehlermeldung und das programm startet mit dem gleichen Quellcode und der gleichen behandenlten datei ohne Probleme. Ausnahme: eine Datei die ebenaflls die gleiche Bezeichnung trägt (Name des Spiels: Spiel.exe, Name einer anderen beliebigen Datei: SPiel.bmp) Hier wird auf dem anderen PC eine nicht vorhandene Datei als Fehler lokalisiert.
Das waren nur einige Beispiele
|
| | Datum:09.05.02 17:39 
| |
Dabei scheitn es aber nur bei win98 aufzudrehten....
teste derweil weiter
|
| | Datum:09.05.02 17:41 
(joerse@gmx.de) | |
Hallo Mathias,
Bist Du Dir ganz sicher, daß SetCheck verantwortlich ist ?
Hast Du schon mal:
Cls
declare Check&
Check&=CreateCheckBox(%Hwnd,"Test",10,10,60,20)
SetCheck Check&,1
waitinput
ausprobiert ?
Wenn das läuft ist es was anderes.
Bei mir sind solche gern genommenen Fehler z. B. die Einbindung einer Dll (bei mir im Systemverzeichnis - auf anderem Rechner nicht vorhanden)
oder Bitmaps, die nicht mit korrektem (relativem) Pfad angegeben werden.
Wie lauten denn die Fehlermeldungen.
Entschuldige die Fragerei, aber vielleicht hilft's bei der Fehlereingrenzung.
Vielleicht kannst Du mal ein paar Codezeilen posten oder mir privat zuschicken.
Vielleicht kommen auf einem weiteren System noch interessantere Ergebnisse zustande.
Gruß
Jörg
|
| | Datum:09.05.02 20:02 
| |
Um genauer testen zu können habe ich das profan beispiels dialoge genommen, welche eine solche funktion mit setcheck beinhaltet. Bei mir läufts ohne Probleme beim Beta Rechner hingegen erscheint je nach anzahl der starts entweder garnichts oder das Programm zeigt mir an das die hierbei benötigte DLL bzw, die hierbei verwendete DLL eine solche Funktion nicht beinhaltet. Dabei wird der Name der DLL nicht angezeigt es erscheint nur:
Probleme beim Ausführen einer DLL Funktion
Die vom Programm angesprochene Funktion wird von der verwendete DLL nicht unterstüzt. Die Funktion wurde für eine frühere Windows-Versionen entwickelt.
Bei der sendmessage hingegen, keine Probleme
|
| | Datum:09.05.02 22:33 
(joerse@gmx.de) | |
Welche Profanversion nutzt Du denn ?
Wenn Du eine 16-Bit Dll aufrufst, ist die auf dem anderen Rechner evtl. nicht vorhanden.
Ich glaube ohne konkrete Codezeilen kommt man da nicht weiter.
Poste doch mal die Funktionsdefinition und den Aufruf.
Außerdem - was meinst Du mit: bei der sendmessage.
Ich glaube nicht, daß man SetCheck durch sendmessage ersetzen kann.
Gruß
Jörg
|
| | Datum:10.05.02 13:01 
| |
Schau dir einfach das Programm beispiel Dialoge an, dort tritt das Problem auch auf. mit sendmessage meine ich die möglichkeit das setzen auch per messeage zu machen ($0401 / $00F1 : bm_SetCheck ). Zudem nutze ich die Profan 7 32 bit.
Hier das ganze:
Declare hD%, hB%, hA%, hV%, hN%, hK%, hGm%, hGw%, OK%, \
Name$, Vorname$
Let hD% = @CreateDialog(%HWnd,"Dialogfenster 6",80,90,180,200)
@CreateText(hD%,"Vorname:", 10, 8,60,20)
@CreateText(hD%,"Name:", 10,33,60,20)
@CreateIcon(hD%,"PROFAN", 125,90)
@CreateGroupBox(hD%,"Geschlecht",10,75,100,60)
Let hV% = @CreateEdit(hD%,"",75, 5,85,24)
Let hN% = @CreateEdit(hD%,"",75,30,85,24)
Let hk% = @CreateCheckBox(hD%,"Kunde",10,55,60,24)
Let hGw%= @CreateRadioButton(hD%,"weiblich",17, 93,80,20)
Let hGm%= @CreateRadioButton(hD%,"männlich",17,113,80,20)
Let hB% = @CreateButton(hD%,"&OK",10,140,40,25)
Let hA% = @CreateButton(hD%,"&Abbruch",100,140,60,25)
@SetFocus(hV%)
SetCheck hGw%,1 <-------------------- Hier wurde ich dann sendmessage eintragen
Let OK% = 0
WhileNot Ok%
WaitInput
If @Equ(%Key,2) 'Alt-F4 bzw. Schließen
Let Ok% = 1
ElseIf @GetFocus(hA%) 'ABBRUCH wurde angeklickt
Let Ok% = 1
Cls
Print "... abgebrochen ..."
ElseIf @GetFocus(hB%) 'OK wurde angeklickt
Let Ok% = 1
Let Name$ = @GetText$(hN%)
Let Vorname$ = @GetText$(hV%)
Cls
Print "Name: ";Vorname$,Name$
If @GetCheck(hGw%)
Print "weiblich ";
Else
Print "männlich ";
Endif
If @GetCheck(hK%)
Print "und Kunde!"
Else
Print "und noch nicht Kunde!"
Endif
EndIf
Wend
@DestroyWindow(hD%)
|
| | Datum:10.05.02 13:45 
| |
Hi,
ein 32 Bit System verlangt hin und wieder auch mal LongInt-Variablen. Man darf nicht mehr davon ausgehen, das jedes Handle als 16 Bit Pointer zurückgegeben wird. Das ist mir schon bei allerhand Sourcecodes aufgefallen, viele davon laufen unter Windows XP z.B. nicht mehr richtig, weil dort nur Integer Variablen verwendet werden. Verwendet LongInt Variablen für Pointer und Handle, dann kann manch seltsamer Fehler vermieden werden...
Gruß, Frank
|
| | Datum:10.05.02 15:42 
(joerese@gmx.de) | |
Hallo Mathias,
In Deinem Beispiel hast Du den Kommentar hinter SetCheck nicht auskommentiert:
SetCheck hGw%,1 <-------------------- Hier wurde ich dann sendmessage eintragen
Aber ich nehme nicht an, daß das schon die Lösung ist ;-)
Bei mir läuft's anstandslos und ich kann auch nur wie Frank raten, alle Objekte
über Longint-Handles zu erstellen. Wahrscheinlich reagieren spätere Windowsversionen
da empfindlicher.
Gruß
Jörg
|
| | Datum:10.05.02 17:08 
| |
Jörg sagt selbst das es bei ihm anstandslos läuft, wie auch bei mir. Die Rede war ihr nicht ob es unter Windows XP läuft, meine Frage, mein kommentar oder auch Hinweis war darauf das dieser guelltext auf einen rechner mit win98 ohne Probleme läuft, auf einen anderen rechner der ebenfalls win98 betreibt, es zu unerwarteten Fehler kommt. Ihrbei ist zu beachten das die Tests immer mit der fertigen Exe durchgeführt wurden. es dürften sich also doch zwei win98 version nicht so krass unterscheiden oder?
|
| | Datum:10.05.02 17:23 
| |
Hi,
ersetzte alle Int's in LongInt's und compiliere dann neu.
Kann sein, das der Fehler dann schon behoben ist...
Gruß, Frank
|
| | Datum:11.05.02 11:31 
| |
Ok werde ich mal versuchen
|
| | Datum:12.05.02 13:14 
| |
Neuer Fehler:
Winexewait
und
winexe reagieren gleich
|
| | Datum: 12.05.02 16:41 
(joerse@gmx.de) | |
Hallo,
Ich glaube so kommen wir nicht weiter.
Du mußt schon mal ausführliche selbstgeschriebene Codezeilen posten.
Am besten nur 4-10 Zeilen (lauffähig) bei denen auf Deinem oder einem
anderen Rechner das Problem auftritt.
Wichtig: nicht nur 10 Zeilen aus Deinem Code kopieren sondern auf das nötigste reduzierte Programmteile schreiben.
Vielleicht merkst Du dann schon vorher, ob es an diesen Codezeilen liegt,
oder ob Du vorher irgendwo einen Fehler eingebaut hast.
Gruß
Jörg
|
| | Datum:12.05.02 13:43 
(rgh-soft@t-online.de) | |
Also das Dialogprogramm, so wie Du es hier gepostet hast (mit nachgetragenem Kommentarzeichen hinter dem SetCheck-Befehl), läuft auf meinem Rechner (1,5 GHz, Win2000 SP2, 512 MB) unter PROFAN 7.5 einwandfrei ... sowohl interpretiert als auch als EXE. Ich kann Deine Probleme leider nicht nachvollziehen.
Roland
|
|
|