AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spaltenweise auf TStringList zugreifen

Ein Thema von aaaaaaaaaa_10 · begonnen am 27. Jul 2009 · letzter Beitrag vom 30. Jul 2009
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#31

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 07:46
Hallo,

mit der Taste F7 kannst Du Dein Programm im Einzelschrittmodus ausführen.
Befindet sich deine Maus im Codeeditor über einer Variablen wird Dir der aktuelle Inhalt angezeigt.

Das Tutorial von MaBuSe kann ich Dir empfehlen:
Tutorial: Debugging in Delphi für Anfänger und Fortgeschr.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#32

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 08:08
Das wusste ich ja doch schon Aber danke nochmal. Nuhn ist aber das Problem mit F7, dass er ja das komplette Programm durchlaufen will.Mich interessiert doch aber nur die aktuelle Unit.- Da sitz ich ja morgen noch und druck F7
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#33

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 08:15
Was spricht den gegen das Setzen eines Breakpoints?
Markus Kinzler
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#34

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 08:18
Hab ich schon probiert,aber irgendwie ignoriert er diesen. Zumindestens fängt er trotz breakpoint immer wieder von vorne an
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#35

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 08:23
Ja, wo soll das Programm sonst anfangen? Das ist ein Haltepunkt, also ein Punkt zum Anhalten. Heißt: Das Programm hält an, wenn es da ankommt.

Also setze den Haltepunkt, starte das Programm mit F9. Wenn jetzt das Programm dort ankommt, meldet sich Delphi und du kannst schrittweise durchgehen. Dabei würde ich eher F8 empfehlen, da du dann nicht in Funktionsaufrufe hineingehst. (Das musst du dann entscheiden was du willst.)

Du kannst auch mehrere Haltepunkte setzen, dann kannst du F9 drücken, dann läuft das Programm bis zum nächsten Haltepunkt.

Wenn das Programm gerade angehalten ist, kannst du mit Strg + F7 die markierte Stelle des Quelltextes, z.B, eine Variable auswerten und hineinschauen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#36

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 09:02
Tausden dank. Ich poste mal den Code:

Delphi-Quellcode:
procedure ZehnMinTimerEvent(Sender: TObject);
var
  Sek, Min, ZwSpeicher : TStringList;
  DreiSek, ZehnMin,Temp, temp1, temp2, DatUhr, Datei : string;
  TabPos, Spaltenanzahl, Zeilenanzahl,s, z : integer;
  StringArray: array of array of string;
  TestDatei : TFileStream;
begin
  DreiSek := extractfilepath(application.exename)+'Mom3sek_'+Kennung+'.txt';
  ZehnMin := extractfilepath(application.exename)+'Mom10min_'+Kennung+'.txt';
  TestDatei := TFileStream.Create(ExtractFilePath(application.exename)+'test.txt', fmCreate or
  fmOpenReadWrite);

  Sek := TStringList.Create;
  Min := TStringList.Create;
  ZwSpeicher := TStringList.Create;

  try
    Sek.LoadFromFile(DreiSek);
    Min.LoadFromFile(ZehnMin);

    temp1 := Sek.Strings[Sek.Count-1]; //letzte Zeile der 3SekDatei
    temp2 := Min.Strings[Min.Count-1]; //letzte Zeile der 10MinDatei

    while Min.Count >= 2 do //maximal 1 Zeile + Header
      Min.Delete(1);

    if temp1 <> temp2 then
    begin
      TabPos := posEx(#9,temp1,13);
      if TabPos <> 0 then
      begin
        DatUhr := Copy(temp1,0,TabPos); //Datum und Uhrzeit einfügen
        ZwSpeicher.Delimiter := #9;
        if Sek.Count >= 2 then //ab der 1.Zeile + Header anfangen
        begin
          ZwSpeicher.DelimitedText := Sek.Strings[Sek.Count-1];

          Spaltenanzahl := ZwSpeicher.Count-2; //ohne Datum und Uhrzeit
          Zeilenanzahl := Sek.Count-1; //ohne Header
          Setlength(StringArray,Spaltenanzahl,Zeilenanzahl);
          begin
            z := Zeilenanzahl-1;
            begin;
              for s := 0 to Spaltenanzahl-2 do
              begin
                StringArray[s,z] := ZwSpeicher.Strings[s+2];
                Temp := (StringArray[s,z]) + ';';
                TestDatei.Write(PChar(Temp)^,Length(Temp));
              end;
             StringArray[Spaltenanzahl-1,z] := ZwSpeicher.Strings[ZwSpeicher.Count-1];
             Temp := (StringArray[Spaltenanzahl-1,z]) + #13#10;
             TestDatei.Write(PChar(Temp)^,Length(Temp));
            end;
          end;
         end;
        Min.Add(DatUhr);
      end;
     Min.SaveToFile(ZehnMin);
    end;
  finally
    TestDatei.Free;
    ZwSpeicher.Free;
    Min.Free;
    Sek.Free;
  end;
end;
Ich denke, es sollte so fast stimmen. Allerdings wird immernoch nur eine neue zeile in die datei geschrieben und nicht wie gewollt die neue unter die alte gehängt
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#37

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 09:54
Nach dem Öffnen der Datei, den Dateizeiger ans Ende setzen?
TestDatei.Seek(0, soFromEnd); Seek nochmal in der Hilfe nachschauen, hab' es aus der Erinnerung raus geschrieben.

Muss aber zugeben, das ich den Thread jetzt nur überflogen habe und evtl. am Thema vorbeiposte
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#38

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 10:09
Danke, das wars. Klappt fast perfekt. Nochmal danke für eure geduld.
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#39

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 10:29
Eine kleine Frage hätte ich noch.

Delphi-Quellcode:
 z := Zeilenanzahl-1;
            begin;
              for s := 0 to Spaltenanzahl-2 do
              begin
                StringArray[s,z] := ZwSpeicher.Strings[s+2];
                Temp := (StringArray[s,z]) + ';';
                TestDatei.Write(PChar(Temp)^,Length(Temp));
              end;
             StringArray[Spaltenanzahl-1,z] := ZwSpeicher.Strings[ZwSpeicher.Count-1];
             Temp := (StringArray[Spaltenanzahl-1,z]) + #13#10;
             TestDatei.Write(PChar(Temp)^,Length(Temp));
            end;
Es wird ja alle 3 Sekunden eine neue Zeile angehängt.Allerdings soll das nur geschehen, wenn sich die Zeilenanzahl verändert hat. Wie kann ich das Prüfen?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#40

Re: Spaltenweise auf TStringList zugreifen

  Alt 29. Jul 2009, 10:34
Die Größe der Datei / die Anzahl der Zeilen in einem Feld oder einer Eigenschaft speichern und bei einer Änderung den Code durchführen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 8   « Erste     234 56     Letzte »    


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 02:25 Uhr.
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