Autor |
Beitrag |
Levier
      
Beiträge: 24
|
Verfasst: Fr 11.03.05 16:20
Hi,
ich habe ein Programm, das beim Start den Inhalt eines Memos aus einer Textdatei lädt. Dies funktioniert auch einwandfrei wenn ich das Programm manuell starte.
Das Programm startet auch durch den autostart einwandfrei, doch das Memo bleibt leer
Die Textdatei ist definitiv vorhanden und auch nicht leer! Ich habe auch schon versucht den Inhalt des Memos durch einen Timer ständig neu zu laden, so das sich der Timer selbst beendet sobald das Memo nicht mehr leer ist, doch der Timer läuft unaufhörlich weiter - es sei denn ich starte das Programm manuell, dann funktioniert wieder alles prima und der Timer beendet sich selbst unmittelbar nach dem Programmstart!
Woran könnte diese Fehlfunktion beim autostart liegen?
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 16:22
Wie startest du das Programm? Registry, Autostart-Ordner...?
AXMD
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Fr 11.03.05 16:23
Wo trägst du das Programm denn ein, damit es gestartet wird?
Wenn es vor der Benutzer-Anmeldung gestartet würde, wären evt. Zugriffsrechte oder undefinierte Pfade (EigeneDateien usw. sind dann noch ungültig) der Grund.
|
|
Levier 
      
Beiträge: 24
|
Verfasst: Fr 11.03.05 16:28
achso hat ich vergessen zu erwähnen...
Das Programm ist in der registry unter dem Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
registriert.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 16:30
Levier hat folgendes geschrieben: | achso hat ich vergessen zu erwähnen...
Das Programm ist in der registry unter dem Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
registriert. |
Das ist seltsam. Welche Rechte hat der Benutzer auf die Datei?
AXMD
|
|
Levier 
      
Beiträge: 24
|
Verfasst: Fr 11.03.05 16:32
Momentan wird das Programm nur von mir als Administrator verwendet...
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 16:34
Zeig mal den Code deiner Laderoutine und viell. den Pfad der Datei
AXMD
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Fr 11.03.05 16:37
Hast du denn per Autostart auch den Administrator laufen, oder ist das ein anderer Account?
|
|
Levier 
      
Beiträge: 24
|
Verfasst: Fr 11.03.05 16:42
Im Timer sieht die Routine so aus
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Timer3Timer(Sender: TObject); begin Memo1.Lines.LoadFromFile('textdatei.txt'); if Memo1.Lines[0]<>'' then begin Timer3.Enabled:=false; showmessage('Timer disabled') end; end; |
Im oncreate wird bereits geprüft, ob die Datei im gleichen Verzeichnis wie die exe ist, falls dies nicht der Fall ist, also beim Erststart, wird die Datei automatisch neu angelegt. In meinem Fall ist sie aber bereits mit Inhalt vorhanden, denn der Benutzer muss die Autostartfunktion auch erst aktivieren.
Zuletzt bearbeitet von Levier am Fr 11.03.05 16:44, insgesamt 1-mal bearbeitet
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 16:44
Memo.Lines[0] ersetzt du besser durch Memo.Text, ansonsten bekommst du ne AV
AXMD
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Fr 11.03.05 16:46
Du hast nur den Dateinamen angegeben, startest das Programm per Autostart aber nicht in den Verzeichnis, in dem die Datei steht! Also kompletten Pfad angeben oder Verzeichnis für Programmausführung festlegen!
|
|
Levier 
      
Beiträge: 24
|
Verfasst: Fr 11.03.05 16:53
AXMD hat folgendes geschrieben: | Memo.Lines[0] ersetzt du besser durch Memo.Text, ansonsten bekommst du ne AV
AXMD |
Was ist denn der Vorteil davon? Bisher hatte ich damit auch keine Probleme? Auch wenn es nicht zur Lösung des Problems beiträgt, würde es mich interessieren um weitere Erfahrungen zu sammeln... 
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 16:54
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Fr 11.03.05 16:58
@AXMD: Das ist nicht ganz richtig, denn TMemo.Text ist der ganze Text, der in allen Lines enthalten ist, während Lines[0] nur der TExt der ersten Zeile ist!
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 17:02
wdbee hat folgendes geschrieben: | @AXMD: Das ist nicht ganz richtig, denn TMemo.Text ist der ganze Text, der in allen Lines enthalten ist, während Lines[0] nur der TExt der ersten Zeile ist! |
Das ist mir klar; ich hab auch nie was anderes behauptet. In seinem Fall ist das auch egal. Aber was bringt ihm die erste Zeile, wenn sie u.U. gar nicht existiert?
AXMD
|
|
Levier 
      
Beiträge: 24
|
Verfasst: Fr 11.03.05 17:05
wdbee hat folgendes geschrieben: | Du hast nur den Dateinamen angegeben, startest das Programm per Autostart aber nicht in den Verzeichnis, in dem die Datei steht! Also kompletten Pfad angeben oder Verzeichnis für Programmausführung festlegen! |
Super! Da lag der Fehler. Das wusste ich nicht, ich dachte die Registrierung ist wie so eine Art Verknüpfung und führt das Programm aus dem im Schlüssel angegebenen Pfad aus
Vielen Dank @wdbee und AXMD für sie super schnelle Hilfe, hätte ich nicht gedacht......
Is' echt 'n super Forum hier 
|
|
wdbee
      
Beiträge: 628
Erhaltene Danke: 1
|
Verfasst: Fr 11.03.05 17:11
Er prüft doch zunächst mal, ob die erste Zeile leer ist, nicht ob alle Zeilen leer sind.
Kann man ein Memo überhaupt ohne mindesten eine (leere) Zeile erzeugen? Wenn ich alle Zeilen lösche, so dass im Lines-Editor oben 0 Zeilen angezeigt werden, kann ich trotzdem ShowMEssage(MyMemo.Lines[0]) ausführen, ohne das ein Fehler auftritt.
|
|
AXMD
      
Beiträge: 4006
Erhaltene Danke: 7
Windows 10 64 bit
C# (Visual Studio 2019 Express)
|
Verfasst: Fr 11.03.05 17:13
wdbee hat folgendes geschrieben: | Er prüft doch zunächst mal, ob die erste Zeile leer ist, nicht ob alle Zeilen leer sind.
Kann man ein Memo überhaupt ohne mindesten eine (leere) Zeile erzeugen? Wenn ich alle Zeilen lösche, so dass im Lines-Editor oben 0 Zeilen angezeigt werden, kann ich trotzdem ShowMEssage(MyMemo.Lines[0]) ausführen, ohne das ein Fehler auftritt. |
Musst du komische Memos haben ^^
AXMD
|
|
uall@ogc
      
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Fr 11.03.05 18:00
es ist einfach unsauber das so zu machen
if length(memo1.lines.text) <> 0 then ...
ist wohl die beste variante
wenn man nunmal listbox1.items[0].text = '' machen würde gibts ne exception da in nem memo halt nur der text da ist und das trennzeichne #13#10 ist auch bei einem leeren memo die erste zeile vorhanden
man sollte sich das halt abgewöhnen :>
_________________ wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
|
|