AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Memo befüllen in Timer = leer

Ein Thema von Mohadrim · begonnen am 28. Mär 2017 · letzter Beitrag vom 29. Mär 2017
Antwort Antwort
Mohadrim

Registriert seit: 4. Jun 2004
8 Beiträge
 
#1

AW: Memo befüllen in Timer = leer

  Alt 28. Mär 2017, 14:42
Der Timer Timer1 ist über einen Button aktivert worden das geht ja alles wie gesagt auch das, was noch nach der For Schleife kommt wird umgesetzt genauso wie das davor.

time ist einer Zähler der beim Button klick auf 10 gesetzt wird und mit jedem Timer1 Event um 1 runtergezählt wird. r ist ein Integer und dient mir als Schranke damit das Programm weiß ok r = 1 also Zeile nicht mehr hinzufügen. Das Funktioniert auch super Problem ist eben nur, dass es in der procedur TForm1.Timer1Timer nicht mehr geht. Bei FormShow oder direkt bei Button1.Click funktioniert der Code auch.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.431 Beiträge
 
Delphi 12 Athens
 
#2

AW: Memo befüllen in Timer = leer

  Alt 28. Mär 2017, 14:46
Moin...
Zitat:
time ist einer Zähler der beim Button klick auf 10 gesetzt wird und mit jedem Timer1 Event um 1 runtergezählt wird
...das sehe ich im Code nicht.

PS: time ist eine denkbar ungünstige Benamsung der Variable... Siehe himitsu: http://docwiki.embarcadero.com/Libra....SysUtils.Time
PS1: Das kommt von der nicht Benutzung von sprechenden Variablen wie time oder r. Die Kollidierung mit Systemvariablen kann dann nicht passieren...
PS2: Einen Couter würde ich statt den falschem time in CurrentStep (oder so) umbenennen.

Geändert von haentschman (28. Mär 2017 um 15:04 Uhr)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

AW: Memo befüllen in Timer = leer

  Alt 28. Mär 2017, 15:02
Mal im Debugger gefragt, ob diese Bedingung überhaupt erfüllt ist? if time = 0
Time ist übrigens die akuelle Uhrzeit, es sei denn, es gibt eine globale Variabel gleichen Namens, was aber äußerst ungünstig wäre. Bitte bennne die Variabel Time um, um Fehler durch Namenskonflikte ausschließen zu können.
Delphi-Quellcode:
  Memo1.Clear;
  if time = 0 then
  begin
    Timer1.Enable := false;
    Memo1.Lines.LoadFromFile('dateiname');
    Memo2.Clear;
    for i := 0 to Memo1.Lines.Count-1 do begin
      if (Pos('#Hier_nicht_mehr', Memo1.Lines[i]) <> 0) and (r = 0) then
        r := 1;
      if r = 0 then
        Memo2.Lines.Add(Memo1.Lines[i]);
    end;
  end;
Wenn bei dem von mir geänderten Quelltext das Memo1 immer leer ist, dann ist die Bedingung time = 0 nicht erfüllt.
Der Fehler liegt höchstwahrscheinlich nicht in der For-Schleife, sondern entweder im Timerhandling oder in der Programmlogik des Timerereignisses irgendwo vor Timer1.Enable := false;
  Mit Zitat antworten Zitat
a.def
(Gast)

n/a Beiträge
 
#4

AW: Memo befüllen in Timer = leer

  Alt 28. Mär 2017, 16:19
Delphi-Quellcode:
if (Pos('#Hier_nicht_mehr', Memo1.Lines[i]) <> 0) and (r = 0) then
 r := 1;
if r = 0 then
 Memo2.Lines.Add(Memo1.Lines[i]);
Warum nicht...
Delphi-Quellcode:
if Pos('#Hier_nicht_mehr', Memo1.Lines[i]) > 0 then
 Break // Schleife beenden statt den Quatsch mit r := und if r = zu machen
else
 Lines.Add(Memo1.Lines[i]);
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer
Online

Registriert seit: 13. Aug 2002
17.222 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Memo befüllen in Timer = leer

  Alt 28. Mär 2017, 16:40
 Memo1.Lines.LoadFromFile('dateiname'); Ich hoffe 'dateiname' ist ein vollständiger Dateiname mit Pfad.
Ansonsten ist es zufall ob deine Datei (neben der Exe) genommen wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Memo befüllen in Timer = leer

  Alt 28. Mär 2017, 17:43
Und wie/wo ist r vorbelegt worden?
wenn r=4 dann kannst Du das alles in die Tonne kloppen!

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Memo befüllen in Timer = leer

  Alt 29. Mär 2017, 00:21
Also, im Prinzip wurden ja alle Möglichkeiten schon mehrmals genannt
und es gibt nur 3 Problemzonen und eine Aufgabenstellung, die nun endlich mal geklärt werden sollten.
  • Time ist nie 0, dann geht es nie in den Code
  • die Datei ist leer, dann passiert nichts in der Schleife
  • r ist nicht initialisiert, steht zu Beginn auf sonstwas und somit trift niemals das if i=0
  • und du solltes lernen den Debugger zu benutzen, dann würdest du bestimmt sofort den Grund sehen können
    > Haltepunkte auf die 3 eventuellen Problemzeilen und angucken ob in den Variablen auch etwas Richtiges drin steht
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Mär 2017 um 00:23 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:01 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