AGB  ·  Datenschutz  ·  Impressum  







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

Textimport und export

Ein Thema von bennySB · begonnen am 27. Mai 2013 · letzter Beitrag vom 30. Mai 2013
Antwort Antwort
Seite 5 von 6   « Erste     345 6      
Benutzerbild von bennySB
bennySB

Registriert seit: 14. Mai 2013
42 Beiträge
 
#41

AW: Textimport und export

  Alt 28. Mai 2013, 12:23
ganz am Ende der [autoexec] Bereich, dort geschieht die meiste Arbeit und da darf ich leider kein "=" nutzen^^

Aber wie gesagt das ist eine Sache die noch etwas Zeit hat, momentan hänge ich eh daran die onClick Geschichte zum laufen zu kriegen

Ich habe zwar

Delphi-Quellcode:
      GPSDirCheckBox := TCheckBox.Create(UserDirPageCAE);
      
      with GPSDirCheckBox do //Parameter für die GPS-CheckBox
        begin
       
          GPSDirCheckBox.Parent := UserDirPageCAE.Surface;
          Caption := ExpandConstant('{cm:GPSVerzeichnis}');
          Left := ScaleX(0);
          Top := ScaleY(120);
          Width := ScaleX(400);
          Height := ScaleY(40);
          OnClick := @GPSDirCheckBoxOnClick;
        end;
      end;

    procedure GPSDirCheckBoxOnClick(Sender: TObject);
 
        begin

          //GPS-Verzeichnisauswahlfenster
          UserDirPageCAE.Add('GPS-Ordner Verzeichnis');
          
          //GPS-Standardpfad in der Verzeichnisauswahl
          UserDirPageCAE.Values[1] := ExpandConstant(
          'C:\CAE2000\');
        end;
      end;
Das nun geschrieben, jedoch motzt er immer rum "unknown Identifier", aber ich bin irgendwie gedanklich dabei das ja die Zuweisung zur procedur über den Sender geschieht und damit eigentlich alles abgehackt sein sollte.....
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#42

AW: Textimport und export

  Alt 28. Mai 2013, 13:07
ganz am Ende der [autoexec] Bereich, dort geschieht die meiste Arbeit und da darf ich leider kein "=" nutzen^^

Aber wie gesagt das ist eine Sache die noch etwas Zeit hat, momentan hänge ich eh daran die onClick Geschichte zum laufen zu kriegen
Prima, der Ansatz ist gut. Das "@" muss weg, weil du nicht die Adresse der procedure sondern die procedure an sich da angibst. Innerhalb der OnClick musst du dann auf GPSDirCheckBox.Checked abfragen, ob festzusetllen ob in der Checkbox ein Haken gesetzt wurde oder nicht. Zudem muss die procedure oben innerhalb des Formulars deklariert werden.
  Mit Zitat antworten Zitat
Benutzerbild von bennySB
bennySB

Registriert seit: 14. Mai 2013
42 Beiträge
 
#43

AW: Textimport und export

  Alt 28. Mai 2013, 13:47
Okay das die procedure mit in das Formular muss hatte ich auch nur durch ein bissl rum probieren ist sie an der falschen Stelen hängen geblieben *gg*

Das "@" hatte ich nur eingefügt weil es ohne auch nicht funktionierte und ich dies bei ein paar Beispielen gesehen hatte, mein Code sieht momentan wie folgt aus bzw. der Ausschnitt

Delphi-Quellcode:
    procedure InitializeWizard;

      begin
      UserDirPageCAE := CreateInputDirPage(wpSelectDir,
      ExpandConstant('{cm:CAEVerzeichnis}'),
      ExpandConstant('{cm:SpeicherortPRTDEF}'),
      ExpandConstant('{cm:SpeicherzielPRTDEF}'),
      false,
      'Neuer Ordner');


      //CAE-Verzeichnisauswahlfenster
      UserDirPageCAE.Add('CAE2000.EXE Verzeichnis');

      //CAE-Standardpfad in der Verzeichnisauswahl
      UserDirPageCAE.Values[0] := ExpandConstant(
      'C:\CAE2000\');

      GPSDirCheckBox := TCheckBox.Create(UserDirPageCAE);
      
      with GPSDirCheckBox do //Parameter für die GPS-CheckBox
        
        begin
          GPSDirCheckBox.Parent := UserDirPageCAE.Surface;
          Caption := ExpandConstant('{cm:GPSVerzeichnis}');
          Left := ScaleX(0);
          Top := ScaleY(120);
          Width := ScaleX(400);
          Height := ScaleY(40);
          Checked := GPSDirCheckBoxChecked;
          OnClick := GPSDirCheckBoxOnClick;
        end;
      
        procedure GPSDirCheckBoxOnClick(Sender: TObject);
 
        begin
          if GPSDirCheckBox.Checked then
            begin
              //GPS-Verzeichnisauswahlfenster
              UserDirPageCAE.Add('GPS-Ordner Verzeichnis');
          
              //GPS-Standardpfad in der Verzeichnisauswahl
              UserDirPageCAE.Values[1] := ExpandConstant(
              'C:\CAE2000\');
            end;
        end;
      
      end;
Jedoch kriegt er es noch immer nicht hin und gibt mir noch immer den Unknown identifier für "GPSDirCheckBoxOnClick" raus.

(Falls etwas nicht ersichtlich sein sollte hab ich im Dateianhang mal das gesamte Projekt, aber eigentlich sollte dies ja net notwendig sein hoffe ich^^)
Angehängte Dateien
Dateityp: txt DOSBox.txt (11,9 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#44

AW: Textimport und export

  Alt 28. Mai 2013, 13:53
OnClick erwartet eine Methode keine zudem erst später deklarierte Prozedur.

Also etwas in der Art ...

Delphi-Quellcode:
procedure TMeinForm.GPSDirCheckBoxOnClick(Sender: TObject);
.....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#45

AW: Textimport und export

  Alt 28. Mai 2013, 13:55
Eine procedure innerhalb einer procedure geht aus syntaktischen Gründen nicht. Stell die procedure GPSDirCheckBoxOnClick über die procedure InitializeWizard.
  Mit Zitat antworten Zitat
Benutzerbild von bennySB
bennySB

Registriert seit: 14. Mai 2013
42 Beiträge
 
#46

AW: Textimport und export

  Alt 28. Mai 2013, 14:29
Das war es noch, also kann ich mir in Zukunft merken das solche Verschachtelungen nicht machbar sind, gut zu wissen *gg*

Jedoch muss doch das @ vorran stehen und der Name der procedure bleibt wie gehabt, der Code sieht nun so aus:

Delphi-Quellcode:
    procedure GPSDirCheckBoxOnClick(Sender: TObject);
 
      begin
        if GPSDirCheckBox.Checked then
          begin
            //GPS-Verzeichnisauswahlfenster
            UserDirPageCAE.Add('GPS-Ordner Verzeichnis');
         
            //GPS-Standardpfad in der Verzeichnisauswahl
            UserDirPageCAE.Values[1] := ExpandConstant(
            'C:\CAE2000\');
          end

      end;
   
    procedure InitializeWizard;

      begin
      UserDirPageCAE := CreateInputDirPage(wpSelectDir,
      ExpandConstant('{cm:CAEVerzeichnis}'),
      ExpandConstant('{cm:SpeicherortPRTDEF}'),
      ExpandConstant('{cm:SpeicherzielPRTDEF}'),
      false,
      'Neuer Ordner');


      //CAE-Verzeichnisauswahlfenster
      UserDirPageCAE.Add('CAE2000.EXE Verzeichnis');

      //CAE-Standardpfad in der Verzeichnisauswahl
      UserDirPageCAE.Values[0] := ExpandConstant(
      'C:\CAE2000\');

      GPSDirCheckBox := TCheckBox.Create(UserDirPageCAE);
      
      with GPSDirCheckBox do //Parameter für die GPS-CheckBox
        
        begin
          GPSDirCheckBox.Parent := UserDirPageCAE.Surface;
          Caption := ExpandConstant('{cm:GPSVerzeichnis}');
          Left := ScaleX(0);
          Top := ScaleY(120);
          Width := ScaleX(400);
          Height := ScaleY(40);
          Checked := GPSDirCheckBoxChecked;
          OnClick := @GPSDirCheckBoxOnClick;
        end;
      
      end;
und er funktioniert auch.
Nur gibt es noch einen Schönheitsfehler den ich mit ner else Schleife wohl entfernen muss:

Wenn man die CheckBox aktiviert wird die Verzeichnisauswahl eingeblendet, entfernt man den Hacken so bleibt die Auswahl, klickt man nun erneut den Hacken an so erscheint noch eine Auswahl.
Von der momentanen Funktion her ja auch vollkommen korrekt.
mit *.Add füge ich die Auswahl ja nun hinzu, jedoch wüsste ich nicht das es ein *.remove oder *.hide Befehl gibt.
Da muss ich mal meinen UMTS stick und Google glühen lassen^^
  Mit Zitat antworten Zitat
Benutzerbild von bennySB
bennySB

Registriert seit: 14. Mai 2013
42 Beiträge
 
#47

AW: Textimport und export

  Alt 29. Mai 2013, 11:01
Da ich so jetzt nichts dafür gefunden habe hab ich es mir einfach gemacht in dem ich die CheckBox gegen einen RadioButton getauscht habe und wenn der zusätzliche Eintrag jetzt gesetzt wird obwohl er nicht notwendig ist bringt das auch keinen um, damit kann ich locker leben.

Zusätzlich habe ich etwas herum gespielt und eine Versionskontrolle mit implementiert die auch wunderbar funktioniert und eine Messagebox aufruft falls eine eine neuere Version bereits installiert ist.
Nun möchte ich dem Benutzer gerne die Wahl lassen ob er es dabei belässt oder die aktuelle Version deinstalliert mit einer YES/NO abfrage und dem Aufruf der unins000.exe ausm {app} Verzeichnis das ja logischerweise bereits besteht. Dazu nutze ich momentan folgenden Code:

Delphi-Quellcode:
        if(not Result) then
          begin
            if MsgBox(Format(ExpandConstant('{cm:NewerAppFound}'),[DecodeVersion(SavedMajor,SavedMinor)]),mbConfirmation,MB_YESNO) = IDYES then;
                begin
                Exec(ExpandConstant('{app}\unins000.exe'),'','',SW_SHOW,ewWaitUntilTerminated,ResultCode)
                end;
          end;
jedoch kriege ich immer die fehlermeldung dass das {app} Verzeichnis noch nicht initialisiert wurde und nun brauch ich nen Denkanstoß, wie kann ich den initialisieren?



Edit: Wobei bin ich gerade aufm falschen gedanklichen Dampfer?
Ich muss das Verzeichnis erst durch ne Code-Abfrage ermitteln denn die Setup Routine weiß ja gar nicht welches das momentane {app} Verzeichnis ist und durch die Abfrage vorher dann erfährt mein Exec-Befehl auch das Verzeichnis und hat es initialisiert.
Von daher ignoriert erstmal den Post, sorry^^

Geändert von bennySB (29. Mai 2013 um 11:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von bennySB
bennySB

Registriert seit: 14. Mai 2013
42 Beiträge
 
#48

AW: Textimport und export

  Alt 29. Mai 2013, 11:46
Ich möchte mal euren Erfahrungsschatz anzapfen^^

Zum Identifizieren des Verzeichnisses habe ich mir nun zwei Lösungsvarianten rausgesucht:

1. Variante über
function FindFirst(const FileName: String; var FindRec: TFindRec): Boolean; .


2. Variante über einen Eintrag in der Registry wo immer das aktuelle {App} Verzeichnis eingetragen wird und den Wert kann er sich dann ja auslesen.


Ich persönlich bevorzuge Variante 2, dies wird wohl die sauberste, sicherste und schnellste sein oder?
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#49

AW: Textimport und export

  Alt 29. Mai 2013, 11:56
Ich möchte mal euren Erfahrungsschatz anzapfen^^

Zum Identifizieren des Verzeichnisses habe ich mir nun zwei Lösungsvarianten rausgesucht:

1. Variante über
function FindFirst(const FileName: String; var FindRec: TFindRec): Boolean; .


2. Variante über einen Eintrag in der Registry wo immer das aktuelle {App} Verzeichnis eingetragen wird und den Wert kann er sich dann ja auslesen.


Ich persönlich bevorzuge Variante 2, dies wird wohl die sauberste, sicherste und schnellste sein oder?
Variante 1 : Kann der Benutzer bei der Installation frei wählen wie das Verzeichnis heißen soll, hättest du hier keine Ahnung wonach du suchen solltest.

Variante 2 : Gefällt mir.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von bennySB
bennySB

Registriert seit: 14. Mai 2013
42 Beiträge
 
#50

AW: Textimport und export

  Alt 29. Mai 2013, 13:05
hmmm ich komme gerade einfach nicht weiter.
Ich habe es mir nun so eingestellt das er sich den Pfad aus der Registry holt und überprüft, sollte der Pfad nicht gefunden werden so bricht er mit einer Fehlermeldung zum manuellen deinstallieren ab und gut ist. Findet er den Pfad kommt die Meldung des Versionsunterschiedes, jedoch startet er nicht meine angegebene unins000.exe und ich sehe nicht warum, er bricht dann auch einfach alles ab.

Delphi-Quellcode:
        Result := (SetupMajor > SavedMajor) or ((SetupMajor = SavedMajor) and (SetupMinor >= SavedMinor));
        
        if(not Result) then
          begin
            if RegQueryStringValue(HKLM,'{#UNINSTKEY}','InstallLocation',DOSBoxCAE2000Path) then
              begin
                result := DirExists(DOSBoxCAE2000Path);
              end;
              if not Result then
                begin
                  MsgBox(ExpandConstant('{cm:DOSBoxPathNotFound}'),mbError,MB_OK);
                  ResultDOSBoxCAE2000PathCheck := false;
                end else
            
            if MsgBox(Format(ExpandConstant('{cm:NewerAppFound}'),[DecodeVersion(SavedMajor,SavedMinor)]),mbConfirmation,MB_YESNO) = IDYES then;
              begin
                Exec(ExpandConstant('>'),'DOSBoxCAE2000Path\unins000.exe','',SW_SHOW,ewWaitUntilTerminated,ResultCode);
              end;
          end;

Edit: Den Abbruch des Setups rufe ich halt hier auf (nur zur Veranschaulichung)

Delphi-Quellcode:
    function InitializeSetup: boolean;

      begin
        UserFolderCAE := '';
        Result := true;
        Result := IsSetupNewer;

        if ResultDOSBoxCAE2000PathCheck = false then
          begin
            result := false;
          end;
      
      end;

Geändert von bennySB (29. Mai 2013 um 13:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 6   « Erste     345 6      

 

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