| Autor |
Beitrag |
daywalker0086
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Do 29.12.05 17:39
Hallo, hab ein problem, ich habe ein Paar Editfelder und eine html Datei, in die Daten aus den Editfelder so hineingeschrieben werden:
Quelltext 1:
| SLAlkoven.Add('<tr> <td width="400">'+DBMemo1.Text+'<hr></td> <td valign="top"><span style="font-family:''Times New Roman'',Times,serif; font-weight:bold; font-size:12pt">'+EBezeichnung.Text+'</span><br><br>'+'<img src="data/images/gebrauchte/'+EBild.Text+'.jpg"></td></tr>'); |
Meine Frage:
Wie kann ich jetzt diese Daten wieder aus der Datei löschen? Die EIngabemaske sozusagen ist ja immer die gleiche, also wenn die Daten der einzelnen Felder mit einem Datensatz in der Datei übereinstimmen, soll der Der Datensatz in der Datei koplett mit den html Tags gelöscht werden. Die kann ich das nun machen?
Mit
Quelltext 1:
| SLAlkoven.Delete('<tr> <td width="400">'+DBMemo1.Text+'<hr></td> <td valign="top"><span style="font-family:''Times New Roman'',Times,serif; font-weight:bold; font-size:12pt">'+EBezeichnung.Text+'</span><br><br>'+'<img src="data/images/gebrauchte/'+EBild.Text+'.jpg"></td></tr>'); |
geht es nicht, da kommt dann immer Incompatible types: Integer and String.
Das ist ja auch verständlich nur wie kann ichs jetzt machen das es funktioniert?
Für Hilfe wäre ich sehr dankbar, komm da nicht weiter.
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: Do 29.12.05 17:53
Uups, so'n Mist, meine Glaskugel ist gerade zerbrochen
Aber mal im ernst:
Poste doch mal mehr von Deinem Code und beschreibe mal etwas verständlicher,
was Du GENAU willst.
Sonst fallen mir im Momement nur solche Schlagworte wie
StringReplace oder Pos ein.
Moin
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Do 29.12.05 18:24
Also ich habe Edirfelder, 4 Stück, dann habe ich eine Stringliste, in die ich die Daten der Editfelder hineinschreiben lasse:
Quelltext 1: 2:
| SLAlkoven := TStringList.Create; alkoven:= 'E:\Programme\Borland\Delphi7\Projects\alkoven.txt'; |
Wenn ich auf einen Button klicke dnn macht er folgendes:
Quelltext 1: 2: 3: 4:
| SLAlkoven.LoadFromFile(alkoven); SLAlkoven.Add('<tr> <td width="400">'+DBMemo1.Text+'<hr></td> <td valign="top"><span style="font-family:''Times New Roman'',Times,serif; font-weight:bold; font-size:12pt">'+EBezeichnung.Text+'</span><br><br>'+'<img src="data/images/gebrauchte/'+EBild.Text+'.jpg"></td></tr>'); SLAlkoven.SaveToFile(alkoven); |
Jetzt stehen meine Eingaben von den Editfeldern mit html Code in der Datei alkoven.txt
Das Problem:
Wenn ich jetzt das gleiche in meine Editfelder eingebe, soll wenn ich auf meinen "löschen" Button drücke dieserDatensatz, der ja dann schon in der Datei vorhanden ist gelöscht werden, wie mach ich das nun, ich hoffe ich konnte mich jetzt verständlich ausdrücken.
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: Do 29.12.05 18:32
Ich hoffe ich habe Dich verstanden.
Also, Du liest die Datei in Deine Stringlist ein,
und dann gehst Du zeile für Zeile der Stringlist durch und vergleichst die aktuelle Zeile mit
Deinem Vergleichsstring.
Ist der String identisch, dann schmeist Du ihn aus Deiner Stringlist raus.
Anschließend schreibst Du die Stringlist wieder in die Datei.
Ich denke mal, das ist hinzukriegen.
Moin
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Do 29.12.05 18:42
Es wäre schön wenn du mir einen sagt was ich da ungefär einzugeben hätte, also nich direkt für mein Projekt, nur mal was allgemeines, ich weis jetzt nämlich nicht, wie man das vergleicht.
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: Fr 30.12.05 08:34
Ok,
vergleichen tust Du mit dem "=" Zeichen.
Das heißt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| Procedure BlaBla; Var I : Integer; Begin For I := 0 To SlAlkoven.Count -1 Do if SLAlkoven[I] = ''<tr> <td width="400">'+DBMemo1.Text+ // Vergleichen '<hr></td> <td valign="top"><span style="font-family:' 'Times New Roman'',Times,serif; font-weight:bold; font-size:12pt">'+ EBezeichnung.Text+'</span><br><br>'+'<img src="data/images/gebrauchte/'+ EBild.Text+'.jpg"></td></tr>' Then SlAlkoven.Delete(I); // Und wenn vorhanden, dann löschen end; | Moin
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Fr 30.12.05 17:58
Danke, das geht alles soweit, nur, wenn ich den gleichen Eintrag zweimal in meiner Datei sthen hab und dann auf meinen Löschen button drücke, dann kommt da:" List index out of bounds (5) ", kann ich das irgendwie unterbinden? Er soll eigentlich nur einen der beiden einträge löschen.
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Sa 07.01.06 12:40
Huhu kann mir nichtmal jemand eine Antwort geben dafür oder gibts da keine, kann ich mir aber nicht vorstellen. Helft mir doch mal bitte,
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: Sa 07.01.06 15:08
Zeig uns mal mehr von Deinem Code.
Sonst wird eine Hilfestellung eher schwierig.
Moin
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Sa 07.01.06 17:41
Der Quelltext:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button2Click(Sender: TObject); Var I : Integer; Begin For I := 0 To SlAlkoven.Count -1 Do if SLAlkoven[I] = ''<tr> <td width="400">'+DBMemo1.Text+ // Vergleichen '<hr></td> <td valign="top"><span style="font-family:' 'Times New Roman'',Times,serif; font-weight:bold; font-size:12pt">'+ EBezeichnung.Text+'</span><br><br>'+'<img src="data/images/gebrauchte/'+ EBild.Text+'.jpg"></td></tr>' Then SlAlkoven.Delete(I); // Und wenn vorhanden, dann löschen SLAlkoven.SaveToFile(alkoven); end; |
So siehts aus aber wie gesagt, das Problem ist die Fehlermeldung wenn mehrere gleiche Datensätze vorhanden sind. die soll dann auch alle gelöscht werden, aber er gibt nur die oben genannte Fehlermeldung aus.
Da gibt es auch noch ein kleines problem: Es soll das Stück: '<img src="data/images/gebrauchte/'+
EBild.Text+'.jpg"> nicht mit auf übereinstimmung geprüft werden, aber wenn ich es einfach löschen, stimmt dann der Datensatz ja nichtmehr mit dem schon in der Datei vorhandenen überein und er löscht den Datensatz nichtmehr, also da bräucht ich auch noch Hilfe wenns geht
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: Sa 07.01.06 18:01
Mal sehen...
Beim Löschen bekommst Du also irgendwann die Meldung
"List Index out of Bounds"
Vielleicht verschluckt sich Delphi da ja an der geänderten Menge
der Einträge in Deiner ListBox.
Drehen wir also einfach die Schleife um,
und gehen von hinten nach vorne durch:
Delphi-Quelltext 1: 2:
| For I := SlAlkoven.Count -1 downto 0 Do if SLAlkoven[I] ... |
Tja, und wenn Du nicht die ganze Zeile vergleichen willst,
dann kommst Du nicht darum herum mit POS zu arbeiten:
Delphi-Quelltext 1: 2: 3:
| If (Pos(Ebezeichnung.Text,SLAlkoven[i]) > 0) AND (Pos(EBild.Text,SLAlkoven[i]) > 0) Then SLAlkoven.delete[i] |
Vielleicht kommst Du jetzt ja ein wenig weiter
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Sa 07.01.06 18:36
Danke das war es was ich suchte
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: Sa 07.01.06 21:33
Hab ein riesen Problem, hab das jetzt so gemacht
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TForm1.Button2Click(Sender: TObject); Var I : Integer; Begin if CSparte.ItemIndex=0 then begin SLAlkoven.LoadFromFile(alkoven); For I := SlAlkoven.Count -1 downto 0 Do if (Pos(Ebezeichnung.Text,SLAlkoven[i]) > 0) AND (Pos(DBMemo1.Text,SLAlkoven[i]) > 0) Then SLAlkoven.delete(i);
SLAlkoven.SaveToFile(alkoven); |
Es funktioniert auch einwandfrei ABER:
Ich hab die exe Datei nun in dein anderen Ordner verschoben und jetzt so ausgeführt, nun löscht er meine Datensätze nichtmher, aber alles andere funzt soweit noch, woran kann das liegen?
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: So 08.01.06 13:24
Hmmm, meine Glaskugel hat gerade den Geist aufgegeben....
Also, entweder Du lieferst mehr Quellcode,
oder aber, Du versuchst mal selber Deine Probleme zu lösen.
Moin
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: So 08.01.06 14:18
Dann eben noch mehr quellcode wenn es der Problemlösung beiträgt aber ich weis nicht was ich da noch mehr quellcode posten soll:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158:
| unit caratech;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Buttons, ComCtrls, FMTBcd, DB, SqlExpr, DBTables, OleServer, WordXP, DBClient, DBGrids, ExtCtrls, DBCtrls, Mask, Menus, IniFiles, XPMan, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, WinInet, jpeg, WinSock, IdFTP, IdAntiFreezeBase, IdAntiFreeze, ExtDlgs, printers, OleCtrls, SHDocVw;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; EBild: TDBEdit; MainMenu1: TMainMenu; Datei1: TMenuItem; Schlieen1: TMenuItem; ClientDataSet1: TClientDataSet; DataSource1: TDataSource; ClientDataSet1ID: TAutoIncField; ClientDataSet1Sparte: TStringField; ClientDataSet1Bezeichnung: TStringField; ClientDataSet1Beschreibung: TMemoField; ClientDataSet1Bildname: TStringField; DBGrid1: TDBGrid; DBMemo1: TDBMemo; EBezeichnung: TDBEdit; CSparte: TDBComboBox; Label4: TLabel; Label5: TLabel; StatusBar1: TStatusBar; XPManifest1: TXPManifest; Bearbeiten1: TMenuItem; htmlDateierstellen1: TMenuItem; htmlDateihochladen1: TMenuItem; GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; IdFTP1: TIdFTP; IdTCPClient1: TIdTCPClient; ProgressBar1: TProgressBar; IdAntiFreeze1: TIdAntiFreeze; Bilderhochladen1: TMenuItem; OpenPictureDialog1: TOpenPictureDialog; GroupBox2: TGroupBox; DBNavigator1: TDBNavigator; Vorschau1: TMenuItem; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Schlieen1Click(Sender: TObject); procedure htmlDateierstellen1Click(Sender: TObject); procedure htmlDateihochladen1Click(Sender: TObject); procedure FtpVerbindung; procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); procedure Bilderhochladen1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Vorschau1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private procedure CreateParams(var Params: TCreateParams); override; public end;
var FTP_info, host, ipad, clientverzeichnis, Serververzeichnis, Datendatei:string; RTT, code, hopCount: dword; FTP_Status:Integer; BytesToTransfer: LongWord; Form1: TForm1; inifile: TInifile; test, ftpdat: string; MyItem: TListItem; header, article, alkoven, teilintegriert, kastenwagen, wohnwagen, footer:String; SLHeader, SLArticle, SLAlkoven, SLTeilintegriert, SLKastenwagen, SLWohnwagen, SLFooter, flist, SLComplete: TStrings; implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin
ClientDataSet1.LoadFromFile((ExtractFileDir(Application.ExeName))+'\Datadb.xml'); SLHeader:= TStringList.Create; SLFooter := TStringList.Create; SLComplete := TStringList.Create; SLAlkoven := TStringList.Create; SLTeilintegriert := TStringList.Create; SLKastenwagen := TStringList.Create; SLWohnwagen := TStringList.Create; alkoven:= (ExtractFileDir(Application.ExeName))+'\alkoven.txt'; teilintegriert:= (ExtractFileDir(Application.ExeName))+'\teilintegriert.txt'; kastenwagen:= (ExtractFileDir(Application.ExeName))+'\kastenwagen.txt'; wohnwagen:= (ExtractFileDir(Application.ExeName))+'\wohnwagen.txt'; inifile := TIniFile.Create(IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName)) + 'ftp.ini'); clientverzeichnis := inifile.ReadString('ftp', 'clientverzeichnis', ''); serververzeichnis := inifile.ReadString('ftp', 'serververzeichnis', ''); Datendatei := inifile.ReadString('ftp', 'htmlDateiname', '');
end;
procedure TForm1.Button2Click(Sender: TObject); Var I : Integer; Begin if CSparte.ItemIndex=0 then begin SLAlkoven.LoadFromFile(alkoven); For I := SlAlkoven.Count -1 downto 0 Do if (Pos(Ebezeichnung.Text,SLAlkoven[i]) > 0) AND (Pos(DBMemo1.Text,SLAlkoven[i]) > 0) Then SLAlkoven.delete(i); SLAlkoven.SaveToFile(alkoven);
end else if CSparte.ItemIndex=1 then begin SLTeilintegriert.LoadFromFile(teilintegriert); For I := SLTeilintegriert.Count -1 downto 0 Do if (Pos(Ebezeichnung.Text,SLTeilintegriert[i]) > 0) AND (Pos(DBMemo1.Text,SLTeilintegriert[i]) > 0) Then SLTeilintegriert.Delete(I); SLTeilintegriert.SaveToFile(teilintegriert);
end else if CSparte.ItemIndex=2 then begin SLKastenwagen.LoadFromFile(kastenwagen); For I := SLKastenwagen.Count -1 downto 0 Do if (Pos(Ebezeichnung.Text,SLKastenwagen[i]) > 0) AND (Pos(DBMemo1.Text,SLKastenwagen[i]) > 0) Then SLKastenwagen.Delete(I); SLKastenwagen.SaveToFile(kastenwagen);
end else begin SLWohnwagen.LoadFromFile(wohnwagen); For I := SLWohnwagen.Count -1 downto 0 Do if (Pos(Ebezeichnung.Text,SLWohnwagen[i]) > 0) AND (Pos(DBMemo1.Text,SLWohnwagen[i]) > 0) Then SLWohnwagen.Delete(I); SLWohnwagen.SaveToFile(wohnwagen); end; end; |
Das ist das Stück Quellcode, was nicht funktioniert! Noch den Rest Quellcode?
Aber das funktioniert ja alles...
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: So 08.01.06 14:58
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| procedure TForm1.FormCreate(Sender: TObject); begin ClientDataSet1.LoadFromFile((ExtractFileDir(Application.ExeName))+'\Datadb.xml'); SLHeader:= TStringList.Create; SLFooter := TStringList.Create; SLComplete := TStringList.Create; SLAlkoven := TStringList.Create; SLTeilintegriert := TStringList.Create; SLKastenwagen := TStringList.Create; SLWohnwagen := TStringList.Create; alkoven:= (ExtractFileDir(Application.ExeName))+'\alkoven.txt'; teilintegriert:= (ExtractFileDir(Application.ExeName))+'\teilintegriert.txt'; kastenwagen:= (ExtractFileDir(Application.ExeName))+'\kastenwagen.txt'; wohnwagen:= (ExtractFileDir(Application.ExeName))+'\wohnwagen.txt'; inifile := TIniFile.Create(IncludeTrailingPathDelimiter(ExtractFileDir(Application.ExeName)) + 'ftp.ini'); clientverzeichnis := inifile.ReadString('ftp', 'clientverzeichnis', ''); serververzeichnis := inifile.ReadString('ftp', 'serververzeichnis', ''); Datendatei := inifile.ReadString('ftp', 'htmlDateiname', ''); end; |
Tja, Dein Programm erwartet sämtliche Dateien
im selben Verzeichnis wie das Programm selbst.
Wenn Du die Exe verschiebst, müssen sämtliche
anderen Dateien in das selbe Verzeichnis.
Im übrigen würde ich Dir (für die Übersichtlichkeit)
in Deinem Code empfehlen, eine Variable mehr zu
deklarieren, und der dann denn Wert (String) des
Programmverzeichnisses übergeben, danach liest sich dann
dein Code wesentlich angenehmer:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.FormCreate(Sender: TObject); begin StartDir := ExtractFilePath(ParamStr(0)); ClientDataSet1.LoadFromFile(StartDir+'\Datadb.xml'); SLHeader:= TStringList.Create; SLFooter := TStringList.Create; SLComplete := TStringList.Create; SLAlkoven := TStringList.Create; SLTeilintegriert := TStringList.Create; SLKastenwagen := TStringList.Create; SLWohnwagen := TStringList.Create;
alkoven:= StartDir+'alkoven.txt'; teilintegriert:= StartDir+'teilintegriert.txt'; kastenwagen:= StartDir+'kastenwagen.txt'; end; |
So könntest Du dann auch noch relativ leicht und
gut lesbar mit Unterverzeichnissen arbeiten,
in dem Du alle Deine "Datenbanken" in ein Unterverzeichnis
"DAT" verschiebst und aus Deinem Programm heraus diese dann
von dort aus öffnest, aber das ist Geschmackssache
(müllt aber Dein Programmverzeichnis nicht so zu).
Delphi-Quelltext 1:
| allkoven := StartDir+'dat\allkoven.txt'; |
Moin
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: So 08.01.06 15:12
Danke für den Tipp, aber meinst du daran liegt es das die löschprozedur nicht funktioniert, ich hab alle Dateien im gleichen Verzeichnis, aber diese Prozedur funzt nicht obwohl alle anderen Prozeduren funktionieren.
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: So 08.01.06 17:13
Ich hab Dich jetzt nicht wirklich verstanden.
Welche Procedure funktioniert denn nicht.
Wie wäre es denn, nebenbei bemerkt, deine Funktion
zum löschen der Datensätze in eine eigene Procedure zu packen und so
zu formulieren, daß sie für alle Deine "Datenbanken" funktioniert.
Dein Code wird dann übersichtlicher, besser zu warten und Du
brauchst auch längst nicht mehr so viele variablen vom Typ TStringList.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Procedure CheckDatenbank(Datei,Text1,Text2:String); Var I : Integer; SL : TstringList; Begin SL.Create; SL.LoadFromFile(Datei); For I := Sl.Count -1 downto 0 Do if (Pos(Text1,SL[i]) > 0) AND (Pos(Text2,SL[i]) > 0) Then SL.delete(i); SL.SaveToFile(Datei); SL.Free; end |
Damit könntest Du Deine Procedure Button2Click (ist 'n scheiß Name) wesentlich übersichtlicher halten:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.Button2Click(Sender: TObject); Begin Case CSparte.ItemIndex of 0 : CheckDatenbank(Alkoven,EBezeichnung.Text,DBMemo1.Text); 1 : CheckDatenbank(Teileintegriert,EBzeichnung.Text, DBMemo1.Text); Bla Bla Bla End; End; |
Tja, und wenn Du immer nur die Selbern werte vergleichst, "EBezeichnung.Text und DBMemo1.Text"
dann brauchst Du die ja nicht variable zu halten und könntest so die "CheckDatenbank" Procedure
noch einwenig kürzen...
Und, noch Fragen
|
|
daywalker0086 
      
Beiträge: 243
Delphi 2005 Architect
|
Verfasst: So 08.01.06 18:29
Das find ich voll cool, so werd ich das auch umschreiben, hab mich schon aufgeregt, das der Quellcode für das bissl so lang ist.
Aber da du mich noch nicht richtig verstanden hast: Die Procedur, die ich gepostet habe, also
procedure TForm1.Button2Click(Sender: TObject);
funktioniert, wenn ich das Programm im Delphiordner: Projedts/.. starte einwandfrei, aber sobald ich das Programm, und alle Dateien die meines Wissend dazugehören in einem Ordner auf meinem Desktop kopiere und dann starte nichtmehr, aber alle anderen Proceduren in meinem Programm tuns noch, thats the Problem!
Ja so siehts aus aber danke für Kürzugsvorschläge für den Code
Nachtrag:
Hab den Code umgeschrieben und die Procedure oben eingebunden, aber erhalte folgenden Fehler:
Unsatisfied forward or external declaration: 'TForm1.CheckDatenbank'
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71:
| uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, Buttons, ComCtrls, FMTBcd, DB, SqlExpr, DBTables, OleServer, WordXP, DBClient, DBGrids, ExtCtrls, DBCtrls, Mask, Menus, IniFiles, XPMan, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, WinInet, jpeg, WinSock, IdFTP, IdAntiFreezeBase, IdAntiFreeze, ExtDlgs, printers, OleCtrls, SHDocVw;
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; EBild: TDBEdit; MainMenu1: TMainMenu; Datei1: TMenuItem; Schlieen1: TMenuItem; ClientDataSet1: TClientDataSet; DataSource1: TDataSource; ClientDataSet1ID: TAutoIncField; ClientDataSet1Sparte: TStringField; ClientDataSet1Bezeichnung: TStringField; ClientDataSet1Beschreibung: TMemoField; ClientDataSet1Bildname: TStringField; DBGrid1: TDBGrid; DBMemo1: TDBMemo; EBezeichnung: TDBEdit; CSparte: TDBComboBox; Label4: TLabel; Label5: TLabel; StatusBar1: TStatusBar; XPManifest1: TXPManifest; Bearbeiten1: TMenuItem; htmlDateierstellen1: TMenuItem; htmlDateihochladen1: TMenuItem; GroupBox1: TGroupBox; Button1: TButton; Button2: TButton; IdFTP1: TIdFTP; IdTCPClient1: TIdTCPClient; ProgressBar1: TProgressBar; IdAntiFreeze1: TIdAntiFreeze; Bilderhochladen1: TMenuItem; OpenPictureDialog1: TOpenPictureDialog; GroupBox2: TGroupBox; DBNavigator1: TDBNavigator; Vorschau1: TMenuItem; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Schlieen1Click(Sender: TObject); procedure htmlDateierstellen1Click(Sender: TObject); procedure htmlDateihochladen1Click(Sender: TObject); procedure FtpVerbindung; procedure IdFTP1Work(Sender: TObject; AWorkMode: TWorkMode; const AWorkCount: Integer); procedure IdFTP1WorkBegin(Sender: TObject; AWorkMode: TWorkMode; const AWorkCountMax: Integer); procedure Bilderhochladen1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Vorschau1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); Procedure CheckDatenbank(Datei,Text1,Text2:String); private
procedure CreateParams(var Params: TCreateParams); override; public
end; |
|
|
stifflersmom
      
Beiträge: 194
XP /XP PRO/ SuSE div.
D1 - D7, BDS 2006
|
Verfasst: So 08.01.06 19:13
Klar, wenn du die Procedure oben (zur Form) deklarierst,
dann musst Du sie auch (unten) dementsprechend benennen.
Wenn Du dir mal die Deklaratiionen (der bestehenden Proceduren)
genauer ansiehst, wirst Du schon drauf kommen.
An sonsten:
Delphi-Quelltext 1:
| Procedure Tform1.checkdatenbanken... |
| Zitat: | Aber da du mich noch nicht richtig verstanden hast: Die Procedur, die ich gepostet habe, also
procedure TForm1.Button2Click(Sender: TObject);
funktioniert, wenn ich das Programm im Delphiordner: Projedts/.. starte einwandfrei, aber sobald ich das Programm, und alle Dateien die meines Wissend dazugehören in einem Ordner auf meinem Desktop kopiere und dann starte nichtmehr, aber alle anderen Proceduren in meinem Programm tuns noch, thats the Problem |
Doch, habe ich.
An sich MUSS Dein Programm (wenn Du nicht DOCH irgendwo im Quelltext eine absolute Pfadangabe
hinterlegt hast) auch von einem anderen Verzeichnis aus zu starten sein.
Ich weiß auch nicht genau, ob Du nicht um Unterverzeichnis Deines Desktops
irgendwie Probleme kriegst.
Mach Doch einfach mal ein Verzeichnis in z.B. C:\Programme
schieb ALLE notwendigen Dateien da rein und versuchs noch mal von dort aus.
Wenn es denn so klappt, kannst Du Dir ja eine Verknüpfung von dem Programm auf
Deinen Desktop legen.
Moin
|
|
|