Re: Spaltenweise auf TStringList zugreifen
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. |
Re: Spaltenweise auf TStringList zugreifen
Das wusste ich ja doch schon :-D 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 :gruebel:
|
Re: Spaltenweise auf TStringList zugreifen
Was spricht den gegen das Setzen eines Breakpoints?
|
Re: Spaltenweise auf TStringList zugreifen
Hab ich schon probiert,aber irgendwie ignoriert er diesen. Zumindestens fängt er trotz breakpoint immer wieder von vorne an
|
Re: Spaltenweise auf TStringList zugreifen
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. |
Re: Spaltenweise auf TStringList zugreifen
Tausden dank. Ich poste mal den Code:
Delphi-Quellcode:
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
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; |
Re: Spaltenweise auf TStringList zugreifen
Nach dem Öffnen der Datei, den Dateizeiger ans Ende setzen?
Delphi-Quellcode:
Seek nochmal in der Hilfe nachschauen, hab' es aus der Erinnerung raus geschrieben.
TestDatei.Seek(0, soFromEnd);
Muss aber zugeben, das ich den Thread jetzt nur überflogen habe und evtl. am Thema vorbeiposte :oops: |
Re: Spaltenweise auf TStringList zugreifen
:thumb: Danke, das wars. Klappt fast perfekt. Nochmal danke für eure geduld. :thumb:
|
Re: Spaltenweise auf TStringList zugreifen
Eine kleine Frage hätte ich noch.
Delphi-Quellcode:
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?
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; |
Re: Spaltenweise auf TStringList zugreifen
Die Größe der Datei / die Anzahl der Zeilen in einem Feld oder einer Eigenschaft speichern und bei einer Änderung den Code durchführen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:17 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