AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Erhalte vom Programm "Keine Rückmeldung" - Speicherüberlauf?
Thema durchsuchen
Ansicht
Themen-Optionen

Erhalte vom Programm "Keine Rückmeldung" - Speicherüberlauf?

Ein Thema von DieFliege · begonnen am 10. Nov 2015 · letzter Beitrag vom 11. Nov 2015
 
DieFliege

Registriert seit: 6. Aug 2013
54 Beiträge
 
Delphi XE4 Professional
 
#1

Erhalte vom Programm "Keine Rückmeldung" - Speicherüberlauf?

  Alt 10. Nov 2015, 16:20
Hallo Gemeinde,

ich habe wieder mal ein Problem(chen) und hoffe auf Hilfe.

Zur Ausgangssituation:
Ich habe einen String mit bis zu 1000 Zeichen, den ich in einer Funktion bearbeiten möchte. Diese Funktion dient dazu den Text auf eine bestimmte Breite zu bringen (60 Zeichen). Weiterhin habe ich meiner Funktion beigebracht, dass der Test um 15 Zeichen eingerückt werden soll. Meine Funktion setzt auch brav den Zeilenumbruch (#13#10) an letzten Leerzeichen bevor die Zeilenbreite von 60 erreicht ist und rückt den Text ein - Zeile für Zeile. Anschließend übernehme ich den nun "neuen" String mit den Zeilenumbrüchen in die Zwischenablage.

Zum Problem:
Wenn ich nun eine Weile an meinen PC arbeite und einige Programme offen habe, erhalte ich irgendwann, wenn ich meine Funktion nutze, die Meldung des Programms (in dem meine Funktion agiert): "Keine Rückmeldung" Ich kann dann nur noch das Programm schließen und neu starten. Aber auch dann bekomme ich immer wieder diese Meldung. Starte ich aber meinen Rechner neu, ist das Problem erst mal wieder verschoben.

Nun habe ich mich etwas belesen und dabei festgestellt "Text := Text + WeitererText" sehr schnell den Arbeitsspeicher füllen kann. Da ich eine WHILE-Schleife verwende, kann es je nach Textlänge passieren, dass diese Variable vielfach im Speicher abgelegt ist. Abhilfe hier soll der StringBuilder sein, der den String innerhalb einer Variable zusammen setzt und damit den (vermutlichen Speicherüberlauf) verhindert. Dies ist jedoch nicht der Fall.

Darauf hin habe ich mir um der Sache auf den Grund zu kommen ein kleines Progrämmchen geschrieben, in dem ich in einer WHILE-Schleife einen Text X-mal hinter einen bestehenden anhänge, auf das Einrücken und Übernehmen des Strings in die Zwischenablage habe ich dabei noch verzichtet - Auch hier bekomme ich "Keine Rückmeldung". Dieses Progrämmchen habe ich einmal mit StringBuilder und einmal ohne, also "text := test + text" getestet.

Meine Frage nun:
Was genau habe ich übersehen, bzw. wie genau kann ich dieses vermutliche Speicherproblem umgehen? Wenn ich mich nicht verlesen habe ist eine Deklarierung der Variable mit "String" für 1000 Zeichen ausreichend, auch wenn ich noch einen Zeilenumbruch und den 15 Stellen Zeichenvorschub berücksichtige - oder?

Hat jemand einen Tipp, wie ich das Problem beheben kann? Gerne kann ich einmal ein kurzes Beispiel der Funktion hier posten - sobald ich wieder Zuhause bin und an meinen Quelltext komme. Würde mich über eine Rückmeldung freuen.

Liebe Grüße
Micha

Ps.: Verwende Delphi XE-XE4. Der Titel ist leider nicht sehr aussagekräftig, aber mir ist gerade nix besseres eingefallen
  Mit Zitat antworten Zitat
 


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 12: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