Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#26

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 16:13
Hallo,
Zitat:
es gibt Clients, die so etwas verdauen können. In diesem Fall handelst Du Dir durch das löschen der Zeilenkommentare '--' eine Menge Ärger ein, weil dann nur noch "Select Daten" übrig bleibt.
Reihenfolge ändern, erst /* bis */ und dann im Rest noch --

Vorschlag für die Kommentare mit /* */

von hinten nach vorne durch die Liste laufen und wenn ein */ gefunden wurde in der Zeile alles bis einschließlich */ löschen,
dann bis nach vorne weiter alle Zeilen löschen, in denen kein /* vorkommt bis zu der Zeile in der /* vorkommt und in der Zeile alles ab dem /* löschen.

Auch sowas ist möglich:

SQL-Code:
Select
Daten /* ab hier jetzt auswählen
-- ,daten1
-- ,daten2
-- ,daten3
-- Bitte das Datumsformat beachten !! */
 from .......
Stelle mir das in etwa so vor (nicht getestet!!!)
Delphi-Quellcode:
bKom := false;
for i := SQLLines.Count-1 downto 0 do begin
  iPosEnde := Pos('*/',SQLLines[i]);
  if iPosEnde > 0 then begin
    s := Copy(SQLLines[i],1,iPosEnde - 1);
    SQLLines[i] := s;
    bKom := True;
  end else begin
    iPosAnfang := Pos('/*',SQLLines[i]);
    if iPosAnfang > 0 then begin
      s := Copy(SQLLines[i],iPosAnfang - 1, length(SQLLines[i]) - iPosAnfang);
      SQLLines[i] := s;
      bKom := False;
    end;
  end;
  if bKom then SQLLines.Delete(i);
end;
for i := SQLLines.Count-1 downto 0 do begin
  bKom := Copy(Trim(SQLLines[i]),1,2) = '--';
  If bKom Then SQLLines.Delete(i)
end;
Du sparst dadurch viele pos auf die ganze Stringliste. Pos ist immer nur für eine Zeile erforderlich, Du brauchst halt zusätzlich einen Schalter zum merken, ob Du in einem Kommentar bist oder nicht.

Stephan

PS.: Dein Speicherproblem muss aber nicht hier liegen, mag sein, das viel Speicher gebraucht wird. Versuche trotzdem heraus´zufinden, was auf dem Rechner zum Zeitpunkt des Fehlers sonst noch so alles unterwegs ist, eventuell läuft ja zuweilen parallel noch ein anderer "Speicherfresser". Im Zweifelsfalle versuche in einem Try-Except-Block herauszubekommen, wie groß die Stringliste ist, wieviel Speicher Dein Programm braucht und wieviel Speicher andere Programme brauchen.
  Mit Zitat antworten Zitat