![]() |
Große Strings im Debugger
Schon
![]()
Delphi-Quellcode:
oder
meinGedöns.ToJson()
Delphi-Quellcode:
kommt.
.ToXML()
Klar kann ich das im Debugger in der Watch-List anzeigen, und er zeigt mir die ersten paar hundert Zeichen an. Aber wenn ich wirklich den kompletten String haben möchte, wie komme ich da dran? Ist ja wirklich heute nichts ungewöhnliches mehr, dass ein String etwas länger wird. |
AW: Große Strings im Debugger
Geht es nur ums reingucken, oder auch ums rauskopieren?
Wenn Ersteres, dann den langen String als StringList oder StringArray im Debugger ausgeben. (lange Zeile in mehrere Kürzere aufgeteilt) ![]() Das ginge sofort und ohne Änderungen/Erweiterungen. Ansonsten könntest du dir auch einen passenden DebugViewer basteln. (glaub da gab es sogar Beispiele/Tutorial hier im Forum) Per se ist es ja OK, dass Strings/Daten (erstmal) gekürtzt ausgegeben werden, damit es nicht zu langsam/aufwändig wird, aber es wäre schon toll, wenn man dann dennoch eine Möglichkeit hätte mehr/alles zu laden. PS: Genauso nervig ist es, dass der Stacktrace gern mal abbricht. Beim letzten Stackoverflow hätte ich gern gewusst wo der Ursprung ist. (wobei es hier ja ein leichtes wäre einfach in der Mitte was wegzulassen, anstatt das ganze Ende Anfang) |
AW: Große Strings im Debugger
Im Endeffekt natürlich ums Rauskopieren, denn ich untersuche eine 5000 Zeilen lange, unformatierte JSON sicher nicht im dem kleinen Textfenster im Debugger.
|
AW: Große Strings im Debugger
Delphi-Quellcode:
So?
Clipboard.AsText := MeinString;
Oder eine Methode schreiben, die einen String schreibt:
Delphi-Quellcode:
procedure SaveStringToFile(const s: string; const fn: TFileName; const Encoding: TEncoding; const BOM: Boolean);
var ss: TStringStream; begin ss := TStringStream.Create(IfThen(BOM and not Encoding.IsSingleByte, #$FEFF) + s, Encoding, False); // BOM nicht bei SingleByteEncodings (das ist alles außer ASCII und Default) try ss.SaveToFile(fn); finally ss.Free; end; end; |
AW: Große Strings im Debugger
Zitat:
![]() Dann kann man bei Auswerten/Ändern z.B.
Delphi-Quellcode:
eingeben und auf Auswerten klicken. Dazu muss im aktuellen Scope dann aber auch System.IOUtils in der uses stehen.
TFile.WriteAllText('c:\temp\dump.txt', MeinString)
Alternativ könnte man sich auch einen
Delphi-Quellcode:
schreiben mit einer
record helper for string
Delphi-Quellcode:
Methode. Aber das ist wegen des Highlander Prinzips bei Helpern nicht so schön.
CopyToClipboard
|
AW: Große Strings im Debugger
Jupp, wollte ich auch grade vorschlagen, da etwas schreiben zu lassen.
Nicht den Haken bei "Seiteneffekte zulassen" vergessen, bzw. diese Funktion standardmäßig in den IDE-Optionen aktivieren. Zitat:
Und ich hatte da auch grade den anderen Fall. Vom Highlander war nichts verfügbar, nur von dem was eigentlich vorher da war. (lokaler Helper in der Implemtation ... lief jahrelang, bis jetzt ein Helper über die Uses rein kam und plötzlich war vom lokalen Helper nichts mehr nutzbar ... nichtmal Helper-Vererbung half) |
AW: Große Strings im Debugger
Ich weiß nicht, ob ich deine Frage richtig verstanden haben. Ich würde es einfach loggen. Mit mORMot geht es einfach. Das Limit z.B. für Log() kannst du selbst festlegen. Die Vorgabe ist MaxInt. Einfaches Beispiel:
Delphi-Quellcode:
Bis bald...
var
logFamily: TSynLogFamily; begin logFamily := TSynLog.Family; logFamily.Level := LOG_VERBOSE; logFamily.PerThreadLog := ptIdentifiedInOneFile; logFamily.HighResolutionTimestamp := True; Application.Initialize; ... uses mormot.core.base, mormot.core.buffers, mormot.core.unicode, mormot.core.log, mormot.crypt.core; procedure TfrmMain.FormCreate(Sender: TObject); var log: ISynLog; text: RawUtf8; begin log := TSynLog.Enter(Self); text := BinToBase64(TAesPrng.Main.FillRandom(20 shl 20)); log.Log(sllInfo, text); end; Thomas |
AW: Große Strings im Debugger
Zitat:
|
AW: Große Strings im Debugger
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Große Strings im Debugger
Hallo,
wenn man wärend des Debugens an einer Stelle den Inhalt eines langen Strings haben will, dann Start -> Auswerten/Ändern,
Delphi-Quellcode:
eingeben und Ausführen. Die erste Zahl entsprechen erhöhen und nochmal. Die Grenze bei Strings im Debugger ist 2k.
Copy(<Variable>, 1, 2000)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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 by Thomas Breitkreuz