Autor Beitrag
AlexII
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Fr 13.02.09 17:24 
Hallo,

hab eine neue Freeware geschrieben, Losungen heißt das, also tägliches Wort Gottes. Es öffnet sich ein Formular mit nem Vers aus der Bibel.

Beim deinstallieren (im Menü) werden alle Registry Einträge und die .exe gelöscht.

Bin jedem dankbar, der das Prog testet.!

PS. Bitte nur das Prog testen und nicht über den Glauben diskutieren, danke!
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von AlexII am Di 11.08.09 10:28, insgesamt 5-mal bearbeitet
freak4fun
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 604
Erhaltene Danke: 4

Win 7 Pro
VS 2013 Express, Delphi, C#, PHP, Java
BeitragVerfasst: Fr 13.02.09 17:29 
Hallo,
das Programm sieht gut aus, der Link funktioniert auch und ich hab auf den ersten Blick keine Fehler gefunden. ;)

Sehr gut, weiter so! :zustimm:

_________________
"Ich werde auf GAR KEINEN Fall…!" - "Keks?" - "Okay, ich tu's."
i++; // zaehler i um 1 erhoehen
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Fr 13.02.09 17:30 
Mir wäre auch die Meinung von Vista.Leuten wichtig.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 13.02.09 17:58 
Ich habe es gerade unter Vista ausprobiert.
  • Vermutlich durch die breiteren Ränder unter Vista ist es etwas zu tief unten, der untere Rand liegt hinter der Taskleiste.
  • Ich würde ein Popup eher rechts unten als links unten erwarten, weil das eigentlich Standard ist.
  • Den Vers (oder andere Internetseiten wie in "Info...") öffnen funktioniert nicht.
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Fr 13.02.09 21:20 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Den Vers (oder andere Internetseiten wie in "Info...") öffnen funktioniert nicht.[/list]


Hm... kannst du mir vllt sagen wie ich URLs auch unter Vista öffnen kann?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 14.02.09 01:48 
Ich habe es mittlerweile einmal ausprobiert. Ich nehme an du benutzt ShellExecute? Ich habe den Rückgabewert einmal ausgewertet. Ergebnis: Zugriff verweigert.
Dann habe ich einfach mal Win + R gedrückt und http://www.google.de/ eingegeben. Das hat nicht funktioniert. Irgendetwas hat da der IE8 RC1 bei der Installation verstellt. :autsch:

Dann habe ich das Image mit Vista für Virtual PC von MS heruntergeladen, da hat es funktioniert. Es lag also nicht an deinem Programm sondern an meinem Rechner. Tut mir leid... :flehan:

Dieses Image findest du hier, damit kannst du deine Programme selbst unter Vista testen, wenn auch nur ohne Aero:
www.microsoft.com/Do...f&displaylang=en

Dort funktioniert dein Programm allerdings trotzdem nicht. Grund: Irgendwoher bekommt das Programm den '01.01.2009' und das auch noch in dieser Form statt in der im System eingestellten (englischen). Dann kommt die Meldung im Anhang.

// EDIT:
Ja, gerade habe ich den FF als Standardbrowser festgelegt, dann wieder Chrome, jetzt geht es auch bei mir.
Einloggen, um Attachments anzusehen!
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Sa 14.02.09 02:32 
Das Datum bzw. die Tage rechne ich so aus

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function Losungstag(Datum: TDateTime): Integer;
begin
Result:=DaysBetween(Datum, StrToDate('01.01.' + IntToStr(Integer(YearOf(Now)))));
end;

procedure TForm1.Button1Click(Sender: TObject);
var z: Integer;
begin
z:=Losungstag(Now);
end;


Das funktioniert also nur im deutschen Windows bzw. wie da das Datumsformat eigestellt ist.
Kann mir jemand sagen wie ich den Code ändere und das Datum auf jedem Windows richtig ausgerechnet wird?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Sa 14.02.09 02:53 
ausblenden Delphi-Quelltext
1:
z := DayOfTheYear(now);					
;-)
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Sa 14.02.09 15:32 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:

Dort funktioniert dein Programm allerdings trotzdem nicht. Grund: Irgendwoher bekommt das Programm den '01.01.2009' und das auch noch in dieser Form statt in der im System eingestellten (englischen). Dann kommt die Meldung im Anhang.


Danke für die Mühe, hast mir hiermit sehr geholfen, vielen Dank!!!

PS Hab das inzwischen korrigiert.
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Sa 14.02.09 15:33 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
z := DayOfTheYear(now);					
;-)


Vielen dank!!!
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Sa 14.02.09 20:47 
Unter W2K läuft es leider nicht - falls das noch für dich relevant ist. S. Fehlermeldung.
Einloggen, um Attachments anzusehen!
_________________
Salus populi suprema lex esto
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: Sa 14.02.09 21:17 
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
Unter W2K läuft es leider nicht - falls das noch für dich relevant ist. S. Fehlermeldung.


Weiß du vllt woran es liegt?
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Sa 14.02.09 23:04 
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:
Unter W2K läuft es leider nicht - falls das noch für dich relevant ist. S. Fehlermeldung.


Diese Meldung kam als erste. Such im Debugger die Adresse, vielleicht kommst du damit weiter.
Die von mir zuerst gepostete Fehlermeldung sah so selbstgemacht aus. Code87 Systemfehler, hast du eine fremde Unit eingebunden, die das absondern könnte?

Edit: Such mal den Text "Falscher Parameter"
Einloggen, um Attachments anzusehen!
_________________
Salus populi suprema lex esto
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.02.09 02:05 
Hmm, ich habe das gerade unter Windows 2000 mit SP4 getestet. Der Fehler tritt dort auch auf. Im Callstack steht u.a. RtlTraceDatabaseEnumerate, aber ansonsten kann ich da nicht viel zuordnen.

Du lädst ja (mit GIMP erzeugte :mrgreen:) PNGs mit den LMD-Tools, wenn ich das richtig sehe. Vielleicht machen die da etwas.

Dann hast du CreateParams überschrieben, was passiert da denn bei dir?

Wenn ich nämlich mit Delphi 7 (oder ist das Delphi 6 bei dir?) ein Programm erstelle, auch mit TJPEGImage, das du ja wohl auch benutzt, dann funktioniert das auch unter Windows 2000. Du musst also irgendetwas machen, was da Probleme macht. Und es muss etwas sein, was gleich beim Start da ist (eingebundene Units) bzw. passiert (FormCreate / CreateFarams).
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: So 15.02.09 11:29 
Hi,

ja du hast recht ich hab da eine TForm1.CreateParams Procedure.
Hab sie jetzt entfern, kannst du jetzt testen, ob es jetzt funkt? Fanke!


Zuletzt bearbeitet von AlexII am So 15.02.09 17:58, insgesamt 1-mal bearbeitet
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: So 15.02.09 11:49 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Du lädst ja (mit GIMP erzeugte :mrgreen:) PNGs mit den LMD-Tools, wenn ich das richtig sehe. Vielleicht machen die da etwas.

Dann hast du CreateParams überschrieben, was passiert da denn bei dir?


Sag mal woher weiß du das?????????
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: So 15.02.09 14:47 
user profile iconAlexII hat folgendes geschrieben Zum zitierten Posting springen:
Hi,

ja du hast recht ich hab da eine TForm1.CreateParams Procedure.
Hab sie jetzt entfern, kannst du jetzt testen, ob es jetzt funkt? Fanke!


OK, läuft unter W2K. Aber nen Popup unten links? Na ja, ist im Prinzip egal.

_________________
Salus populi suprema lex esto
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 15.02.09 15:26 
user profile iconAlexII hat folgendes geschrieben Zum zitierten Posting springen:
ja du hast recht ich hab da eine TForm1.CreateParams Procedure.
Hab sie jetzt entfern, kannst du jetzt testen, ob es jetzt funkt?
Wie auch user profile icondelphi10 schon sagte: Es läuft jetzt unter Windows 2000.
Auch unter Windows 98 und ME funktioniert es. Genauso unter Vista und Windows 7.

Nur unter Windows 95 läuft es zwar auch, aber es gibt beim Beenden einen Fehler, der sich nicht so einfach wegklicken lässt (immer neue Meldungen). Aber Windows 95 ist ja nicht mehr wichtig, da lohnt es sich kaum da nach dem Fehler zu suchen. ;-)

user profile iconAlexII hat folgendes geschrieben Zum zitierten Posting springen:
Sag mal woher weiß du das?????????
An dem erzeugten Assemblercode. Z.B. sieht dein CreateParams so aus:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
00477130   53                     push    ebx
00477131   8BDA                   mov     ebx, edx
00477133   8BD3                   mov     edx, ebx
00477135   E83668FDFF             call    0044D970
0047713A   814B2400000200         or      dword ptr [ebx+$24], $00020000
00477141   5B                     pop     ebx
00477142   C3                     ret
Du fügst da mit or einen Wert hinzu, der hexadezimal den Wert $20000 hat. Welcher das ist, ließe sich dann auch nachschauen. Was mich etwas wundert: Du rufst das originale überschriebene CreateParams (per inherited) auf (rot markiert) bevor du den Style änderst (die nächste Zeile), das müsste eigentlich hinterher passieren, damit da auch der neue Wert übergeben wird, hätte ich gedacht.
Push und Pop sichern das ebx Register und stellen es wieder her, mov legt einen Wert von einem ins andere (hin und her hier^^) und ret springt aus dem aktuellen Unterprogramm zurück zur letzten Adresse (auf dem Stack).

Nun, und die PNGs und deren Inhalt stehen ja auch im Code drin, und im erweiterten Kommentarfeld steht bei einem davon drin "Created with The GIMP", bei einem anderen zusätzlich ein Copyrightvermerk. Öffne die Exe einfach in einem normalen Editor und such einmal nach "(c) 2004" und "Created with The GIMP". Dafür braucht man gar keinen Disassembler. ;-)
Ach ja, warum LMDTools fällt dir vermutlich an der Stelle dann auf. :mrgreen:
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: So 15.02.09 17:49 
user profile icondelphi10 hat folgendes geschrieben Zum zitierten Posting springen:

Aber nen Popup unten links? Na ja, ist im Prinzip egal.


Was meinst du genau, irgendwie kopiere ich nicht? Wenn dann rechts unten vom Cursor. Ich werde das dann machen wenn es feststeht wo sich das Form öffnen wird. Werd also daran auf jeden Fall denken :-)
AlexII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 180



BeitragVerfasst: So 15.02.09 17:59 
Darf ich euch wieder mit der CreateParams.Geschichte; stören?

Im Tutorial stand auch im Klammern, dass das für XP gedacht ist, deswegen hab ich das jetzt so gelöst.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
function IsXP: Boolean;
var
  OS: TOSVERSIONINFO;
begin
  OS.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO);
  GetVersionEx(OS);
  Result := (OS.dwPlatformId = VER_PLATFORM_WIN32_NT) and
    (OS.dwMajorVersion = 5and (OS.dwMinorVersion = 1);
end;

// Schattiertes Form anzeigen (XP)
procedure TForm1.CreateParams(var Params: TCreateParams);
const
  CS_DROPSHADOW = $00020000;
begin
  if IsXP then
  begin
  inherited;
  Params.WindowClass.Style:=Params.WindowClass.Style or CS_DROPSHADOW;
  end;
end;


Ich prüfe also erstmal ob es sich um XP handelt, wenn ja wird die Schattierung ausgelöst.
Könnt ihr gucken, ob es jetzt so funktioniert und eventuell den Code optimieren?

Die Losungen.exe hab ich aktualisiert.