AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehler beim ausführen eine Update-Funktion
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler beim ausführen eine Update-Funktion

Ein Thema von gelberkaktus · begonnen am 23. Mär 2012 · letzter Beitrag vom 24. Mär 2012
Antwort Antwort
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.233 Beiträge
 
Delphi 10.4 Sydney
 
#1

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 16:08
Und wo genau (Quellcodezeile)?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
NickelM

Registriert seit: 22. Jul 2007
Ort: Carlsberg
445 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 17:32
Also ich vermute einfach mal dass es an der function GetEnvVarValue Funktion liegt. Ich bin mir nicht sicher, ob dies so richtig funktioniert. Mach die Funktion mal so, das ist auch sicherer.

Delphi-Quellcode:
function GetEnvVarValue(const VarName: string): string;
var
  BufSize: Integer; // buffer size required for value
  Buffer : PChar;
begin
  //BuffSize ist nur die Textlänge, ohne nullterminiert.
  BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0);
  if BufSize > 0 then
  begin
    //Speicher setzen
    GetMem(Buffer, (BufSize + 1)*SizeOf(Char)); //BufSize ist ohne nullterminierte, deshalb BufSize +1;
    GetEnvironmentVariable(PChar(VarName),
      Buffer, BufSize);
    Result := Buffer;
    FreeMem(Buffer);
  end
  else
    // No such environment variable
    Result := '';
end;
Nickel
"Lebe und denke nicht an morgen"
Zitat aus dem gleichnamigen Bollywoodfilm.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.667 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 17:36
Hier könnte der Hase auch im Pfeffer liegen, wenn die Datei nicht existiert oder leer ist. Im ersten Fall schlägt das LoadFromFile fehl und im zweiten der Zugriff auf die erste Zeile des Memos.
Zitat:
Delphi-Quellcode:
UpDialog.Memo1.Lines.LoadFromFile((nn + '\versionneu.txt'));
    //vergleicht programmversion mit ermittelter version
    if UpDialog.Memo1.Lines[0] <> version then
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.579 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 18:02
Das wirft aber keine Zugriffsverletzung.
Eine TStringList wirft einen EStringListError und TMemoStrings (die interne Klasse für TMemo.Lines) gibt einfach nur einen Leerstring raus, wenn der Index nicht paßt.

Hier sieht es eher so aus, also wenn irgendwo ein Objekt nicht existiert und auf NIL zugegriffen wird.

GetEnvVarValue ist eigentlich OK und sicher, auch wenn es nicht Unicodetauglich ist.
Ein Bufferoferun ist auch nicht zu erwarten. (höchstens daß der String falsch, also nur zur Hälfte, beschrieben wird)

Solange hier aber nicht die Fehlerstelle genannt wird, hat es wenig sinn hier weiterzusuchen.
Tipp: Es gibt auch ein [DELPHI]-Tag, denn so ist der Code nicht wirklich lesbar.

PS: Warum wandert die Datei eigentlich nach AppData und nicht nach Temp? Es ist wunderschön, wenn AppData mit solchen wunderschönen Dateien vollgemüllt wird, welche man nirgends zuordnen kann.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (23. Mär 2012 um 18:11 Uhr)
  Mit Zitat antworten Zitat
ol1uw

Registriert seit: 24. Jul 2004
Ort: Freiberg
70 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 18:30
wer/was/wo/wann ruft den Funktion updatesuch auf?
Das Formular UpDialog zu diesem Zeitpunkt schon erzeugt?

Uwe
  Mit Zitat antworten Zitat
gelberkaktus

Registriert seit: 18. Mär 2012
Ort: Kölleda/Thüringen
16 Beiträge
 
Delphi 7 Personal
 
#6

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 19:11
der Fehler tritt hier zwischen diesen beiden zeilen auf
Delphi-Quellcode:
    UpDialog.Memo1.Lines.LoadFromFile((nn + '\versionneu.txt'));
    if UpDialog.Memo1.Lines[0] <> version then
Nach der ersten zeile stockt der complier und spuckt den error aus (hatte ich das wirklich so undeutlich angegegeben)



wer/was/wo/wann ruft den Funktion updatesuch auf?
Das Formular UpDialog zu diesem Zeitpunkt schon erzeugt?

Uwe
Die Funktion updatesuch wird mit der Form1 aufgerufen (der hauptform) also startet mit dem Programm. (via FormCreate)

Das Formular UpDialog wird automatisch mit erzeugt.
...Nach der Form1....
"Ohne konkrete Symbole ist der Computer bloß ein Haufen Schrott."
Neil Postman
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#7

AW: Fehler beim ausführen eine Update-Funktion

  Alt 23. Mär 2012, 19:16
der Fehler tritt hier zwischen diesen beiden zeilen auf
Delphi-Quellcode:
    UpDialog.Memo1.Lines.LoadFromFile((nn + '\versionneu.txt'));
    if UpDialog.Memo1.Lines[0] <> version then
Nach der ersten zeile stockt der complier und spuckt den error aus (hatte ich das wirklich so undeutlich angegegeben)
Du hattest es gar nicht angegeben.
Lars
  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 22:40 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