Autor Beitrag
Levier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 24



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 16:22 
:welcome:

Wie startest du das Programm? Registry, Autostart-Ordner...?

AXMD
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 24



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 16:30 
user profile iconLevier 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 24



BeitragVerfasst: Fr 11.03.05 16:32 
Momentan wird das Programm nur von mir als Administrator verwendet...
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 16:34 
Zeig mal den Code deiner Laderoutine und viell. den Pfad der Datei

AXMD
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: Fr 11.03.05 16:37 
Hast du denn per Autostart auch den Administrator laufen, oder ist das ein anderer Account?
Levier Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 24



BeitragVerfasst: Fr 11.03.05 16:42 
Im Timer sieht die Routine so aus
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 16:44 
Memo.Lines[0] ersetzt du besser durch Memo.Text, ansonsten bekommst du ne AV

AXMD
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 24



BeitragVerfasst: Fr 11.03.05 16:53 
user profile iconAXMD 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... :wink:
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 16:54 
user profile iconLevier hat folgendes geschrieben:
user profile iconAXMD 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... :wink:


Ganz einfach: wenn das Memo leer ist, sprich keine erste Zeile ([0]) hat, bekommst du einen Fehler ;)

AXMD
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 17:02 
user profile iconwdbee 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 24



BeitragVerfasst: Fr 11.03.05 17:05 
user profile iconwdbee 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 :roll:

Vielen Dank @wdbee und AXMD für sie super schnelle Hilfe, hätte ich nicht gedacht......

Is' echt 'n super Forum hier :flehan:
wdbee
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 628
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 11.03.05 17:13 
user profile iconwdbee 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: 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