AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehlermeldung "Zu wenig Arbeitsspeicher"

Fehlermeldung "Zu wenig Arbeitsspeicher"

Ein Thema von DerAndereMicha · begonnen am 6. Aug 2008 · letzter Beitrag vom 7. Aug 2008
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 14:38
Versuch es mal mit Zwischenspeichern der Teilstrings wie von Phoenix angesprochen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#12

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 14:40
@DeddyH: Ich hatte Phoenix' Antwort noch nicht gelesen, als ich Dir geantwortet habe, sorry.

@Phoenix: Kannst Du mir dafür mal ein Beispiel geben? Ich glaub ich verstehs gerade nicht so richtig ... habe um die Uhrzeit glaube immer meinen Tiefpunkt

Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#13

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 14:42
Also ich würde so vorgehen:
1.) alle Zeilen, die mit '--' beginnen enfernen.
Delphi-Quellcode:
for i:=TempList.Count-1 downto 0 do // rückwärts zählen !!
  if Trim(Copy(TempList[i],1,2))='--then
    TempList.Delete(i);
2.) TempList.Text ist Stringvariable kopieren, damit arbeiten/ändern und Ergebnis zurückkopieren.
(so wie Phoenix das erklärt hat)

>> daß es daran gelegen haben könnte ?
Wichtig ist das Bottom-Up Design.
Die Procedure wird solange umgebaut/verbessert bis mehrere Programmierer sie für
gut und richtig befinden.
Das gibt Sicherheit und eine gute Basis für ein Projekt.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 14:49
Zitat von sx2008:
for i:=TempList.Count-1 downto 0 do // rückwärts zählen !!
Wieso? Solange keine Zeilen gelöscht werden (und sich dadurch TempList.Count ändert), kann IMHO nichts passieren.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#15

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 15:02
Ich hab jetzt mal alles so geändert, wie ich es verstanden hab und bitte hiermit um erneute Überprüfung (ganz im Sinne des Bottom-Up Designs)

Delphi-Quellcode:
function DeleteCommentsNeu(const SQLLines:TStringList):Boolean;
var beg,en,i,Laenge : integer;
var Temp,begStr,enStr:String;
begin
    Laenge:=Length(SQLLines.Text);
    for i:= SQLLines.Count-1 downto 0 do
    Begin
       Temp:=Copy(Trim(SQLLines[i]),1,2);
       if Temp='--then SQLLines.Delete(i);
    end;

   Temp:=SQLLines.Text;
   while (pos('/*',Temp) <> 0) and
     (pos('*/',Temp)>pos('/*',Temp)) do
   begin
      beg:=pos('/*',Temp);
      en:=pos('*/',Temp);
      if en=0 then en:=Length(Temp);

      begStr:=copy(Temp,1,beg-1);
      enStr:= copy(Temp,en+2,Length(Temp));

      Temp:=begStr+enStr;
   end;
   SQLLines.Text:=Temp;
   Result:=Length(SQLLines.Text)<>Laenge;
end;
Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 15:09
Zitat von DeddyH:
Zitat von sx2008:
for i:=TempList.Count-1 downto 0 do // rückwärts zählen !!
Wieso? Solange keine Zeilen gelöscht werden (und sich dadurch TempList.Count ändert), kann IMHO nichts passieren.
Ja, genau so sieht das aus. Und jetzt schau nochmal auf den fett hervorgehobenen Teil

Zitat von sx2008:
Code:
for i:=TempList.Count-1 downto 0 do // rückwärts zählen !!
  if Trim(Copy(TempList[i],1,2))='--' then
    [b]TempList.Delete(i);[/b]
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#17

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 15:12
Sieht auf den ersten Blick gut aus, allerdings löschst Du keine einzeiligen Kommentare am Zeilenende.

[edit] @Grumpy: das ist mir später dann auch aufgefallen [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#18

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 15:17
So sieht's tatsächlich aus. Danke, ich werd's gleich noch ändern.

Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von DerAndereMicha
DerAndereMicha

Registriert seit: 1. Jul 2004
Ort: Berlin
208 Beiträge
 
Delphi 2007 Enterprise
 
#19

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 15:26
So, fertig:

Delphi-Quellcode:
function DeleteCommentsNeu(const SQLLines:TStringList):Boolean;
var beg,en,i,Laenge : integer;
var Temp,begStr,enStr:String;
begin
    Laenge:=Length(SQLLines.Text);
    for i:= SQLLines.Count-1 downto 0 do
    Begin
      beg:=pos('--',SQLLines[i]);
      if beg <> 0 then
      Begin
        if beg=1 then SQLLines.Delete(i)
        else SQLLines[i]:=Copy(SQLLines[i],1,beg-1);
      end;
    end;

   Temp:=SQLLines.Text;
   while (pos('/*',Temp) <> 0) and
     (pos('*/',Temp)>pos('/*',Temp)) do
   begin
      beg:=pos('/*',Temp);
      en:=pos('*/',Temp);
      if en=0 then en:=Length(Temp);

      begStr:=copy(Temp,1,beg-1);
      enStr:= copy(Temp,en+2,Length(Temp));

      Temp:=begStr+enStr;
   end;
   SQLLines.Text:=Temp;
   Result:=Length(SQLLines.Text)<>Laenge;
end;
Gruß
Micha
Der Weg ist das Ziel...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#20

Re: Fehlermeldung "Zu wenig Arbeitsspeicher"

  Alt 6. Aug 2008, 15:30
Kleiner Vorschlag:
Delphi-Quellcode:
for i:= SQLLines.Count-1 downto 0 do
    Begin
      beg:=pos('--',Trim(SQLLines[i]));
Und
Zitat:
Delphi-Quellcode:
if beg <> 0 then
      Begin
        if beg=1 then SQLLines.Delete(i)
        else SQLLines[i]:=Copy(SQLLines[i],1,beg-1);
      end;
könnte man auch durch case ersetzen, ist aber nicht unbedingt nötig. Ansonsten teste ich das heute Abend mal zu Hause
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:16 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