Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Versions abfrage Problem! (https://www.delphipraxis.net/148455-versions-abfrage-problem.html)

nat 2. Mär 2010 10:07

Re: Versions abfrage Problem!
 
warum machst du das überhaupt in einer schleife, wenn doch klar definiert ist an welcher stelle
was steht? RInf[0] ist dann deine version (die noch geparst werden muß) und RInf[1] deine anzahl
oder was auch immer.

danu1104 2. Mär 2010 10:13

Re: Versions abfrage Problem!
 
Zitat:

Zitat von nat
warum machst du das überhaupt in einer schleife, wenn doch klar definiert ist an welcher stelle
was steht? RInf[0] ist dann deine version (die noch geparst werden muß) und RInf[1] deine anzahl
oder was auch immer.

kann ich dir sagen wieso:

Auf dem webserver ist eine history.config und beim program ist eine.
Die auf dem Server beinhaltet mehrere versionen:

Server history.config
Delphi-Quellcode:
36.01.11 43
36.01.12 6
36.02.13 1
Client history.config (steht immer nur die zuletzt geladene version drin ohne datei anzahl)
Delphi-Quellcode:
36.01.10


so, und er soll eine nach dem anderen beziehen, dass heisst nach dem 36.01.11 update lädt er das update für 36.01.12.

DeddyH 2. Mär 2010 10:15

Re: Versions abfrage Problem!
 
Ich habe jetzt nicht alles in allen Details nachvollzogen, aber die Versionen sollten ja dann in den geraden Zeilen der Stringliste stehen, oder täusche ich mich?

danu1104 2. Mär 2010 10:20

Re: Versions abfrage Problem!
 
genau.

Und diese liste wird von oben nach unten abgearbeitet, die versionsnummer ist gleichzeitig ein ordner auf dem webserver wo er sich die Rinf.Strings[i+1] (43 datein) runterlädt.

das klappt auch. mit

Delphi-Quellcode:
if not(RInf.Strings[i] = Localver ) and (length(RInf.Strings[i]) = 8) then
ich könnte es dynamicher machen indem ich etwas ändere

Delphi-Quellcode:
if not(RInf.Strings[i] = Localver ) and (length(RInf.Strings[i]) > 8) then
aber an für sich hätte ich keine idee diese history config anders auszulesen, deswegen frage ich ja ob ihr es wisst ^^

DeddyH 2. Mär 2010 10:25

Re: Versions abfrage Problem!
 
Machst Du das innerhalb der for-Schleife? Falls ja, dann könntest Du auch so versuchen:
Delphi-Quellcode:
for i := 0 to RInf.Count -1 do
  if not Odd(i) then
    //gerade Zeilennummer
    ...

nat 2. Mär 2010 10:55

Re: Versions abfrage Problem!
 
also entweder macht du das wie über mit schon beschrieben mit einer weiche für grade/ungrade zeilen
oder du lässt das mit DelimitedText weg, gehst zeile für zeile durch und parst jede einzelne zeile
(was ich persönlich viel übersichtlicher finde).
so in die richtung:
Delphi-Quellcode:
RInf.Text:= htt.Get(H+'/'+D+'/history.config');
for i:=0 to RInf.Count - 1 do
begin
  if ParseLine(RInf[i], VersionsInfo) do
  begin
    //versions check hier
  end;
end;
ParseLine(...) wär dann ne eigene function die du dir selber schreiben mußt.

-Phantom- 2. Mär 2010 12:44

Re: Versions abfrage Problem!
 
[edit] falsch verstanden

danu1104 3. Mär 2010 06:11

Re: Versions abfrage Problem!
 
Hallo, ich habe soweit alles geklärt, nun habe ich einen weiteren fehler und ich kann ihn nicht erkennen, evtl ist es noch zu früh ^^

wenn i bei 100 ist gibt es ein fehler ... da es keine datei 0.0100 gibt sondern 0.100
aber ich dachte ich hätte es abgefangen.

Meine Theorie:
if i > 9 then und if i > 99 then stimmt net ganz?

Delphi-Quellcode:
     if i < 10 then
     begin
      Label2.Caption:=RemoteVer+'/0.00'+IntToStr(i);
      download(H+'/'+D+'/'+vers+'/'+'0.00'+IntToStr(i)) end else
     if i > 9 then
     begin
      Label2.Caption:=RemoteVer+'/0.0'+IntToStr(i);
      download(H+'/'+D+'/'+vers+'/'+'0.0'+IntToStr(i)) end else
     if i > 99 then
     begin
      Label2.Caption:=RemoteVer+'/0.'+IntToStr(i);
      download(H+'/'+D+'/'+vers+'/'+'0.'+IntToStr(i)) end

hoika 3. Mär 2010 06:19

Re: Versions abfrage Problem!
 
Halo,

und bei 1000 fängst du wieder an ?

Also ich habe das so gemacht.

Die einzelnen Nummern per Explode (oder StringList->Delimiter)
auslesen.

Auf ganze 100er (OK, 1000 kann ich auch nicht ;)) umgemodelt

0 -> 000
1 -> 001

Den String wieder zusammengebaut

1.2.3.4 -> 001.002.003.004
1.2.3.14 -> 001.002.003.014

und normal per String-Vergleich < oder > vergleichen


Heiko

danu1104 3. Mär 2010 06:22

Re: Versions abfrage Problem!
 
Danke dir :D

ich habs so gelöst
Delphi-Quellcode:
if (i > 9) and (i < 100) then
Ihr seit echt klasse und schnell super weiter so ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 Uhr.
Seite 2 von 3     12 3      

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