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
Benutzerbild von baumina
baumina

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

AW: Textimport und export

  Alt 29. Mai 2013, 10: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
 
#2

AW: Textimport und export

  Alt 29. Mai 2013, 12: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 12:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

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

AW: Textimport und export

  Alt 29. Mai 2013, 12:12
if MsgBox(Format(ExpandConstant('{cm:NewerAppFound}'),[DecodeVersion(SavedMajor,SavedMinor)]),mbConfirmation,MB_YESNO) = IDYES then;
Das ";" am Ende der Zeile bedeutet dass nichts passieren soll. Wenn Du das ";" in dieser Zeile weg machst, geht er auch in das begin/end rein.
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
 
#4

AW: Textimport und export

  Alt 29. Mai 2013, 14:14
Ach das wäre schön einfach gewesen^^

Der kleine Fehler ist mir auch schon aufgefallen nur leider lag es nicht an ihm, ich habe irgendwie die Vermutung das es an der IDYES Abfrage hängt und die nicht richtig läuft.
Das alles abbricht konnte ich korrigieren, da war ein fehler beim InitlializeSetupm aber der ist behoben.
Jetzt ist es egal ob ich Yes oder No anklicke immer so das er mit das Normale Setup einfach startet und ich habe keinen Schimmer mehr warum.

Hier nochmal der aktuelle Code (weiß net mehr ob sich ne Kleinigkeit geändert hat^^)
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 or MB_DEFBUTTON2) = IDYES then
                    begin
                      Exec(ExpandConstant('>'),'DOSBoxCAE2000Path\unins000.exe','',SW_SHOW,ewWaitUntilTerminated,ResultCode);
                    end;
          end;
Und im Anhang mein Komplettes Programm.

Ich kenne sonst einfach nur keine Variante mehr zum Abfragen einer Messagebox.
Angehängte Dateien
Dateityp: txt DOSBox.txt (17,7 KB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von bennySB
bennySB

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

AW: Textimport und export

  Alt 30. Mai 2013, 20:39
Okay mit viel hin und her Probieren habe ich es nun doch geschafft, mein Code an der Stelle sieht nun folgendermaßen aus:

Delphi-Quellcode:
        SetupMajor := CreateDWord({#MAJOR},{#MINOR});
        SetupMinor := CreateDWord({#RELEASE},{#BUILD});
      
        Result := (SetupMajor > SavedMajor) or ((SetupMajor = SavedMajor) and (SetupMinor >= SavedMinor));
        ResultAktuelleAppFound := (SetupMajor = SavedMajor) or ((SetupMajor = SavedMajor) and (SetupMinor = SavedMinor));

        RegQueryStringValue(HKLM,'{#UNINSTKEY}','UninstallString',DOSBoxCAE2000UninstallString);
        DOSBoxCAE2000UninstallPath := (ExtractFileDir(DOSBoxCAE2000UninstallString) + '\' + '"');
        DOSBoxCAE2000UninstallName := ('"' + ExtractFileName(DOSBoxCAE2000UninstallString));
        DOSBoxCAE2000UninstallStringRemovedQuotes := RemoveQuotes(DOSBoxCAE2000UninstallString);
        DOSBoxCAE2000UninstallPathRemovedQuotes := RemoveQuotes(DOSBoxCAE2000UninstallPath);
        DOSBoxCAE2000UninstallNameRemovedQuotes := RemoveQuotes(DOSBoxCAE2000UninstallName);


        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;
            if MsgBox(ExpandConstant('{cm:NewerAppFound}'),mbError,MB_YESNO or MB_DEFBUTTON2) = IDYES then
              begin
                Exec(ExpandConstant(DOSBoxCAE2000UninstallStringRemovedQuotes),'/SILENT','',SW_SHOW,ewWaitUntilTerminated,ResultCode);
              end else
                ResultDOSBoxCAE2000DontDeinstall := true;
          end;
        
        if ResultAktuelleAppFound = true then
          begin
            MsgBox(Format(ExpandConstant('{cm:AktuelleAppFound}'),[DecodeVersion(SavedMajor,SavedMinor)]),mbConfirmation,MB_OK);
          end;
         
      end;
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 09:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz