AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wo ist der Fehler ?

Ein Thema von PsTo · begonnen am 16. Jun 2009 · letzter Beitrag vom 17. Jun 2009
Antwort Antwort
Seite 2 von 2     12   
PsTo

Registriert seit: 16. Jun 2009
14 Beiträge
 
#11

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 21:39
Naja, mache es net gerne, aber gut. hier der source
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, sSkinManager, Menus, StdCtrls, sButton, sEdit, acPNG, ExtCtrls,
  sLabel, sPanel, ComCtrls, sTrackBar, Registry, sMemo, Shellapi,
  DynamicSkinForm, OleCtrls, SHDocVw;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    OpenDialog1: TOpenDialog;
    sLabel1: TsLabel;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    sPanel1: TsPanel;
    sLabel2: TsLabel;
    sTrackBar1: TsTrackBar;
    Image1: TImage;
    Image5: TImage;
    sLabel3: TsLabel;
    Label1: TLabel;
    Label2: TLabel;
    sMemo1: TsMemo;
    MainMenu1: TMainMenu;
    test1: TMenuItem;
    test2: TMenuItem;
    procedure Image4Click(Sender: TObject);
    procedure Image3Click(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure sTrackBar1Change(Sender: TObject);
    procedure Image5Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    function GetApplicationDirectory: string;
  end;

var
  Form1: TForm1;
  DATFILE: array[1..100] of string;
  I, C:integer;


implementation


{$R *.dfm}


function TForm1.GetApplicationDirectory: string;
begin
  Result := ExtractFilePath(ParamStr(0)) + 'Easy Start Loader.exe';
end;

procedure TForm1.Image2Click(Sender: TObject);
var sl: TStringlist;
    J,K:integer;
    regist, auto: TRegistry;
    PLACED,PLACE:string;
begin
  // BATCH DATEI GETT GESCHRIWWEN
  sl := TStringlist.Create;
  try
    sl.Add('@echo off');
    for J:=1 to C do
    begin
      sl.Add('start ' + chr(34) + chr(34) + ' ' + chr(34) + DATFILE[J] + chr(34));
    end;
    sl.SaveToFile('C:\EasyStartTimer.bat');
  finally
    sl.Free;
  end;
  // ------------------------------------------

  // REGISTRY WERT GETT GESCHRIWWEN
  regist:=TRegistry.Create;
  try
    regist.RootKey:=HKEY_CURRENT_USER;
    regist.OpenKey('Software\Easy Start Timer\StartTime', true);
    regist.WriteInteger('Time',round(Form1.sTrackBar1.Position));
  finally
    regist.free;
  end;
  // ------------------------------------------

  // LOADER GETT KOPEIERT
  PLACED:=GetApplicationDirectory;
  PLACE:= 'C:\Easy Start Loader.exe';
  copyfile(PChar(PLACED),PChar(PLACE),false);
  // ------------------------------------------

  // Loader gett an den autostart gesaat.
  auto:=TRegistry.Create;
  try
    auto.RootKey:=HKEY_LOCAL_MACHINE;
    auto.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', true);
    auto.writestring('Easy Start Loader','C:\Easy Start Loader.exe');
  finally
    auto.free;
  end;
  // ------------------------------------------
  
  for K:=1 to C do
  begin
    DATFILE[K]:='';
  end;
  Form1.sMemo1.Text:= Form1.sMemo1.Text + 'Activated ! Look Log for more Details.' + #13#10;
end;

procedure TForm1.Image4Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
    sPanel1.caption := OpenDialog1.Filename;
end;

procedure TForm1.Image3Click(Sender: TObject);
var TMP:string;
begin
  if (Form1.sPanel1.Caption <> '') and (Form1.sPanel1.Caption <> TMP) then
  begin
    TMP:=Form1.sPanel1.Caption;
    Form1.sMemo1.Text:= Form1.sMemo1.Text + Form1.sPanel1.Caption + #13#10;
    DATFILE[I]:=Form1.sPanel1.Caption;
    inc(C);
    inc(I);
  end;
end;

procedure TForm1.sTrackBar1Change(Sender: TObject);
begin
  Form1.Label1.Caption:=FloatToStr(Form1.sTrackBar1.Position);
end;

procedure TForm1.Image5Click(Sender: TObject);
var regist, auto, key: TRegistry;
    J:integer;
begin
  // Registry Werter gin gelöscht
  regist:=TRegistry.Create;
  try
    regist.RootKey:=HKEY_CURRENT_USER;
    regist.OpenKey('Software\Easy Start Timer\StartTime', true);
    regist.DeleteValue('Time');
  finally
    regist.free;
  end;

  key:=TRegistry.Create;
  try
    key.RootKey:=HKEY_CURRENT_USER;
    key.OpenKey('Software', true);
    key.DeleteKey('Easy Start Timer\Starttime');
    key.DeleteKey('Easy Start Timer');
  finally
    key.free;
  end;

  auto:=TRegistry.Create;
  try
    auto.RootKey:=HKEY_LOCAL_MACHINE;
    auto.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', true);
    auto.DeleteValue('Easy Start Loader');
  finally
    auto.free;
  end;

  // Dateien gin gelöscht.
  Deletefile('C:\EasyStartTimer.bat');
  Deletefile('C:\Easy Start Loader.exe');
  for J:=1 to C do
  begin
    DATFILE[J]:='';
  end;
  C:=0;
  Form1.sMemo1.Text:= Form1.sMemo1.Text + 'Deactivated ! Look Log for more Details.' + #13#10;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  I:=1;
  C:=0;
end;



end.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#12

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 22:21
Könntest du bitte dem Thema einen aussagekräftigen Titel geben? Danke

Was mir als erstes in deinem Quelltext auffällt ist das du innerhalb der Klasse TForm1 auf die Variable Form1 zugreifst obwohl alles danach aussieht das du von der aktuellen TForm1 die Daten ändern willst. Lass das vorangestellte TForm1 einfach weg wenn du auf die Klasse selbst zugreifst denn niemand versichert dir das die Instanz immer Form1 heißt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
PsTo

Registriert seit: 16. Jun 2009
14 Beiträge
 
#13

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 22:31
Zitat von SirThornberry:
Könntest du bitte dem Thema einen aussagekräftigen Titel geben? Danke

Was mir als erstes in deinem Quelltext auffällt ist das du innerhalb der Klasse TForm1 auf die Variable Form1 zugreifst obwohl alles danach aussieht das du von der aktuellen TForm1 die Daten ändern willst. Lass das vorangestellte TForm1 einfach weg wenn du auf die Klasse selbst zugreifst denn niemand versichert dir das die Instanz immer Form1 heißt.
tschuldigung, mir war kein besseren titel eingefallen.

Das mit dem TForm werd ich mir merken, danke
werde den code am ende sowieso noch einmal ganz überarbeiten.
wollte ihn deshalb auch nicht posten, weil er noch nicht sauber ist.
halt "blockiert" mich momentan das mit dem mainmenu.

edit: meinst du das TForm1 vor einer prozedur oder Form1 vor einer komponente ?
Falls du das TForm1 vor einer prozedur meinst, das kommt automatisch von delphi aus.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#14

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 22:36
Sind ja noch keine Aktionen im MainMenu definiert. Nur falls doch irgendein Event verbunden ist... schmeiße Mainmenu nochmal vom Formular runter und setze es anschließend neu auf das Formular.

wegen TForm1, das war anders gemeint:
Delphi-Quellcode:
procedure TForm1.TuWas(a : integer);
begin
  Form1.sPanel.Caption := 'test'; // <- Unsicher

  sPanel.Caption := 'test'; // <- Sicher
  //weil intern so behandelt;
  self.sPanel.Caption := 'test';
end;
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 22:38
Er meinte die Verwendung von TForm in den Prozeduren. Weil dies wird nicht beim Ändern des Formnamens gleich von Delphi mitgeändert.
Ich persönlich kann in dem Quelltext nichts finden, was dein Problem erklärt.
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#16

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 22:48
Hallo,

eventuell durch den SkinManager
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
PsTo

Registriert seit: 16. Jun 2009
14 Beiträge
 
#17

Re: Wo ist der Fehler ?

  Alt 16. Jun 2009, 23:07
Zum TForm, habs verstanden, klingt auch logisch dankesehr.

Zum skin, nein, ist nicht möglich, da ich die MainMenu komponente von delphi genommen habe

Zum Event, ich hatte vorher ein event in einem untermenu drin gemacht, aber das ist jetzt weg weil ich die komponente schon neu reingemacht hatte. deshalb heisst er im code jetzt auch "test".

Edit: gibt es keine alternative zum mainmenu ?
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#18

Re: Wo ist der Fehler ?

  Alt 17. Jun 2009, 08:30
Auf den ersten Blick ist mir im Code auch nichts aufgefallen. Das TMainMenu funktioniert schon, daran kann es nicht liegen. Nimm' doch mal das Skin-Dingens raus.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
PsTo

Registriert seit: 16. Jun 2009
14 Beiträge
 
#19

Re: Wo ist der Fehler ?

  Alt 17. Jun 2009, 14:17
Hab mal ein test program geschrieben mit opendialog und mainmenu, da funktionierts einwandfrei.

edit: neue erkenntis. Lannes hatte recht
wenn ich den skinmanager rausnehme, dann geht das mainmenu.
Hier mal ein screenshot vom object inspector des managers
http://img16.myimg.de/xyyxxce110f.jpg
ist da eventuell etwas falsch eingestellt ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 14:29 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