Manfred.Becker
-
Gesamte Inhalte
148 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von Manfred.Becker
-
-
Hallo Berty,
für was steht den das "GetSafeHwnd()"
in meinem Posting hab ich gerade eben noch gesagt, das es die F1-Hilfe gibt.
Stell dir vor, die funktioniert auch bei anderen Befehlen/Funktionen! Wieso markierst du nicht einfach die Funktion und drückst F1?
Returns the window handle for a window. Returns NULL if the CWnd is not attached to a window or if it is used with a NULL CWnd pointer.
-
Hi Vampire,
auf der Seite, die du oben angegeben hast, gibt's auch eine Download-Seite
Dort wird beschrieben, wie Daten zu senden sin. Nämlich über ein sogenanntes BSSB - Protokoll für SAM 4000:
BSSB - Protokoll für SAM 4000
Parameter der Schnittstelle : 9600 Baud, 8 Datenbits, 1 Startbit,
1 Stopbit, no Parity
Mit der Adresse wird das PC-Protokoll ausgewählt.
Adresse 0xB1 : Auswertung mit Barcode
Adresse 0xB2 : Auswertung ohne Barcode
PC SAM 4000
-------------------------------------
1. ENQ ->
<- NAK wenn keine Ergebnisse
2. ENQ ->
<- STX wenn Ergebnisse vorhanden
Daten
ETB
Checksumme XOR ( von STX bis ETB )
$
ACK -> wenn Daten richtig empfangen
oder
NAK -> Datensatz wird wiederholt
Daten :
Barcode ( ASCII 8 Stellen : nur Ziffern '0' - '9' ) CR
Manueller Code ( ASCII 8 Stellen : nur Ziffern '0' - '9' ) CR
Scheibentyp ( ASCII 2 Stellen : 'LG', 'LP', 'KK' oder 'ZS' ) CR
Anzahl Scheiben ( ASCII 2 Stellen : XX ) CR
Teiler-Teilerfaktor ( ASCII 3 Stellen : X.X ) CR
Anzahl Einschüsse ( ASCII 2 Stellen : XX ) CR
Einschüsse : Ringwert ( ASCII 4 Stellen : XX.X ) CR
Teiler ( ASCII 6 Stellen : XXXX.X ) CR
X-Abstand ( ASCII 4 Stellen : ±XXXX ) CR
Y-Abstand ( ASCII 4 Stellen : ±XXXX ) CR
Fehlerhafte oder fehlende Werte werden als ? übertragen. Alle
Zahlenwerte werden mit Vornullen gefüllt. Nach jeder Zeile wird
ein Carriage Return ( CR ) übertragen. Die Teiler, X-Abstand und
Y-Abstand sind 1/100 mm vom Scheibenmittelpunkt.
STX = 0x02, ENQ = 0x05, ACK = 0x06, CR = 0x0D, NAK = 0x15
Du musst also zuerst ein einzelnen Zeichen (ENQ = 0x02) senden, um von der Hardware zu erfahren, ob sie zur Zeit Daten senden kann (Antwort = STX) oder nicht (Antwort =NAK). Konnten diese Daten erfolgreich gelesen werden, musst du abschliessen noch ein ACK senden.
Reicht das?
-
es gibt ja auch noch die F1-Hilfe! Die verwendet man immer dann, wenn die Funktion bekannt ist, aber deren Anwendung Probleme bereitet:
//ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTSTR lpParameters, LPCTSTR lpDirectory, INT nShowCmd )
ShellExecute( GetSafeHwnd(), "print", "quiz.txt", NULL, "C:\\Quiz\\", SW_HIDE );
[/PHP]...so etwa sollte das funktionieren.
-
Hi SebastianK,
lass alles beim Alten (keine DLLs). Um deinen Chef zu beruhigen kannst du ja ganz einfach am Ende des ersten Programms ShellExecuteEx() verwenden, um das Zweite automatisch aufzurufen.
-
Alles klar!
ich hab hier noch eine alte Eingaberoutine von mir für den Turbo C++ Compiler ausgegraben. Vielleicht hilft dir das bei deiner Entwicklung:
#include <conio.h>
#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <stdlib.h>
#define EINGABEINT 0
#define EINGABEFLOAT 1
#define EINGABECHAR 2
#define EINGABENORM 0
#define EINGABEHIDE 1
#define EINGABEMODAL 2
#define EINGABEZWANG 4
#define BELL 7
#define DELETE 8
#define ENTER 13
#define ESCAPE 27
typedef enum boolean{false, true};
void* Eingabe(char *text, int typ, int maxlen, int mode);
int main(void)
{
int *i;
float *f;
char *c;
i = (int*)Eingabe("Bitte Integer eingeben :",EINGABEINT,4,EINGABENORM);
printf("Ihre Eingabe: %d\n\n",*i);
free(i);
f = (float*)Eingabe("Bitte Float eingeben :",EINGABEFLOAT,6,EINGABENORM);
printf("Ihre Eingabe: %f\n\n",*f);
free(f);
c = (char*)Eingabe("Bitte String eingeben :",EINGABECHAR,20,EINGABENORM);
printf("Ihre Eingabe: %s\n\n",c);
free(c);
c = (char*)Eingabe("Bitte Passwort eingeben :",EINGABECHAR,10,EINGABEHIDE|EINGABEMODAL|EINGABEZWANG);
printf("Ihre Eingabe: %s\n\n",c);
free(c);
return 0;
}
//--------------------------------------------
// Universelle Eingabefunktion
// (c)28.05.1997 by Manfred Becker
//
// Parameter:
// text : Hinweistext zur Eingabe
// typ : Typ der Eingabe :
// EINGABEINT fuer Integerwert
// EINGABEFLOAT fuer Float-Wert
// EINGABECHAR fuer String
// maxlen : Maximale Eingabelaenge
// mode : Eingabemodus EINGABENORM
// (geODERt) EINGABEHIDE Ausgabe von *****
// EINGABEMODAL kein Abbruch mit ESC moeglich
// EINGABEZWANG keine Leereingabe moeglich
//
// Rueckgabe:
// Eingabe bzw. NULL bei Abbruch
// Achtung: Aufrufende Funktion muss
// Casten und Speicher wieder
// freigeben!
//
// Beispiel:
// int *i;
// i = (int*) Eingabe("Bitte Integer eingeben :", EINGABEINT, 4);
// printf("Ihre Eingabe war %d\n", *i);
// free(i);
//
//--------------------------------------------
void* Eingabe(char *text, int typ, int maxlen, int mode)
{
void *retWert = NULL;
int *iret; // Zeiger fuer Integer
float *fret; // Zeiger fuer Float
char *cret; // Zeiger fuer String
char puffer[128] = ""; // Interner Eingabepuffer
char *pufferPtr = puffer; // Zeiger auf Puffer
int taste='\0'; // Tasteneingabe
char tastenPuffer[2]; // Puffer fuer Tasteneingabe
boolean abbruch = false; // Abbruchbedingung
if (text[0])
printf("%s",text); // Hinweistext ausgeben...
if (maxlen>128)
maxlen=128; // Laengenkorrektur...
while(!abbruch)
{ // Solange Tasten einlesen bis ENTER oder Abbruch mit ESCAPE...
switch(taste = getch())
{
case ENTER:
if (!(mode&EINGABEZWANG) || !(pufferPtr==puffer))
{
printf("\n");
*pufferPtr = '\0';
abbruch = true;
}
break;
case DELETE:
if (puffer != pufferPtr)
{
pufferPtr--;
printf("%c %c",DELETE,DELETE);
}
break;
case ESCAPE:
if (!(mode&EINGABEMODAL))
{
printf("\n");
puffer[0] = '\0';
abbruch = true;
}
break;
default:
boolean eingabe=false;
switch(typ)
{
case EINGABEINT:
sprintf(tastenPuffer,"%c",taste);
if ( strstr("0123456789-+",tastenPuffer) != 0)
{
eingabe = true;
*pufferPtr = taste;
if (mode&EINGABEHIDE) taste='*';
printf("%c",taste);
pufferPtr++;
}
break;
case EINGABEFLOAT:
sprintf(tastenPuffer,"%c",taste);
if ( strstr("0123456789-+.,",tastenPuffer) != 0)
{
eingabe = true;
if (taste==',') taste ='.';
*pufferPtr = taste;
if (mode&EINGABEHIDE) taste='*';
printf("%c",taste);
pufferPtr++;
}
break;
case EINGABECHAR:
sprintf(tastenPuffer,"%c",taste);
if ( strstr("0123456789-+.,:;abcdefghijklmnopqrstuvwxyz„â€ÂABCDEFGHIJKLMNOPQRSTUVWXYZŽ™š ",tastenPuffer) != 0)
{
eingabe = true;
*pufferPtr = taste;
if (mode&EINGABEHIDE) taste='*';
printf("%c",taste);
pufferPtr++;
}
break;
}
if (!eingabe) printf("%c %c",BELL,8); // Alarmsignal bei falscher Eingabe
if (pufferPtr-puffer > maxlen)
{ // Maximale Eingabel„nge erreicht...
pufferPtr--;
printf("%c %c",DELETE,DELETE);
}
} // End of switch(taste = getch())
} // End of while(taste != ENTER && taste != ESCAPE)
if (pufferPtr!=puffer)
{
switch(typ)
{
case EINGABEINT:
iret = (int*)malloc(sizeof(int));
*iret = atoi(puffer);
retWert = iret;
break;
case EINGABEFLOAT:
fret = (float*)malloc(sizeof(float));
*fret = atof(puffer);
retWert = fret;
break;
case EINGABECHAR:
cret = (char*)malloc((maxlen+1)*sizeof(char));
strcpy(cret,puffer);
retWert = cret;
break;
} // End of switch(typ)
} // End of if (taste != ESCAPE)
return(retWert);
}
[/PHP] -
Hi Pittiplatsch,
das aktuelle Datum (Date) kann ganz einfach in Teilstrings (Mid()) auf die jeweiligen Textfelder verteilt werden:
txtTag.Value = Mid(Date, 1, 2)
txtMonat.Value = Mid(Date, 4, 2)
txtJahr.Value = Mid(Date, 7, 4)
[/PHP] -
Hi Mageta,
den Borland Turbo C++ 1.01 Compiler gibt's gratis direkt beim Hersteller:
Dir ist aber schon klar, dass man 'ne DOS-BOX unter Windows ganz einfach schliessen kann? Ein Passwortschutz ist somit Magulatur.
-
Hi Berty,
ich hab das mal mit dem CDC (class of device-context) gemacht. Ist zwar schon 'ne Ewigkeit her, aber hier meine Klassenfunktion zum Drucken:
int CMBLabelPrint::Print(CString LabelName, CString LabelTemplateName, CString LabelPath)
{
CDC PrintDC;
CStdioFile LabelTemplate;
DOCINFO DocInfo;
int nRet;
if (LabelName == "")
return LABELPRINT_LABEL_NOT_DEFINED;
if (LabelTemplateName == "")
return LABELPRINT_LABEL_NOT_DEFINED;
if (m_PrinterName == "")
return LABELPRINT_PRINTER_NOT_DEFINED;
// Drucker-Gerätekontext zuweisen
if (!GetPrinterDC(m_PrinterName, PrintDC))
return LABELPRINT_PRINTER_NOT_INSTALLED;
// Dokumentenvorlage zum Lesen öffnen
if (!LabelTemplate.Open(LabelPath + LabelTemplateName, CFile::modeRead | CFile::typeText))
return LABELPRINT_TEMPLATE_NOT_FOUND;
LabelTemplate.SeekToBegin();
DocInfo.cbSize = LabelName.GetLength();
DocInfo.lpszDocName = LabelName;
DocInfo.lpszOutput = NULL;
// Dokumentenstart an Druckertreiber melden
if ((nRet = PrintDC.StartDoc(&DocInfo)) < 0 )
return LABELPRINT_PRINTER_NOT_READY;
// Seitenstart an Druckertreiber melden
if ((nRet = PrintDC.StartPage()) < 0 )
return LABELPRINT_PRINTER_NOT_READY;
BOOL bEOF = TRUE;
int nRow = 0;
CString TemplateLine;
while (bEOF)
{
// Zeile aus Dokumentenvorlage lesen.
bEOF = LabelTemplate.ReadString(TemplateLine);
// Ab Windows2000 benötigt der Treiber für X- und Y- Koorninaten Werte > 0!
PrintDC.TextOut(10, nRow * 100 + 10, TemplateLine, TemplateLine.GetLength());
// Zeilenzähler erhöhen
nRow++;
}
// Seitenende an Druckertreiber melden
if ((nRet = PrintDC.EndPage()) < 0 )
return LABELPRINT_PRINTER_NOT_READY;
// Dokumentenende an Druckertreiber melden
if ((nRet = PrintDC.EndDoc()) < 0 )
return LABELPRINT_PRINTER_NOT_READY;
// Drucker-Gerätekontext löschen
if ((nRet = PrintDC.DeleteDC()) < 0 )
return LABELPRINT_PRINTER_NOT_READY;
// Dokumentenvorlage schliessen
LabelTemplate.Close();
return 0;
}
[/PHP]Hier noch die Klassenfunktion um den Geräte-Kontext zu erzeugen:
[PHP]
BOOL CMBLabelPrint::GetPrinterDC(CString PrinterName, CDC& PrintDC)
{
char msgbuf[1024];
LPSTR pch;
LPSTR pchFile;
LPSTR pchPort;
BOOL bRet = FALSE;
PrinterName.TrimLeft();
PrinterName.TrimRight();
DWORD size = GetProfileString("PrinterPorts", PrinterName, "", msgbuf, sizeof(msgbuf));
if (size <= 0)
return FALSE;
pch = msgbuf;
for(pchFile = pch; *pch && *pch != ','; pch = CharNext(pch));
if (*pch)
*pch++ = 0;
pchPort = pch;
while (*pch && *pch != ',' && *pch > ' ')
pch = CharNext(pch);
if (*pch)
*pch++ = 0;
try
{ // Exeptionbehandlung PrintDC.CreateDC ...
bRet = PrintDC.CreateDC( pchFile, PrinterName, pchPort, NULL );
}
catch (...)
{
#ifdef _DEBUG
afxDump << "Error at CMBLabelPrint::GetPrinterDC()\n";
#endif
return FALSE;
}
return bRet;
}Das sollte für deine Zwecke reichen. Schau einfach in der Hilfe über CDC nach. Da solltest du alles weitere finden.
Falls du dennoch mein Beispielprojekt haben willst, dann sag Bescheid...
-
Hi,
ich bin's nochmal.
Schau mal hier rein:
Lass dir den Quelltext anzeigen. Damit hast du einen Lösungsweg.
-
Hi,
Habe es mit fpr versucht:
for(x=-10;y==0;x++)
{
y=ax*x*x+b*x*x+c*x+d;
}
cout<<x;
ist's nur ein Tippfehler (das y==0 in der Schleife), oder Absicht?
Wenn's Absicht war, dann wird die Schleife genau einmal durchlaufen. Denn dabei wird ja y zugewiesen und ist somit höchstwahrscheinlich nicht mehr 0!
Ich würde das so machen:
for(x=-10;x<10;x++) { y=a*x*x*x+b*x*x+c*x+d; cout "X=" << x << " Y=" << y; }
Aber selbst das macht nur Sinn wenn eine Wertetabelle erstellt werden soll.
Schau dir mal das an:
-
-
Hi,
ich hab mal vor Jahren einen Kalender in c programmiert.
Vielleicht hilft dir der Quellcode weiter:
/*******************************************************\ ** Programm: KALENDER.CPP ** Version : 1.00 ** Funktion: Ausgabe eines Kalenders (incl. Kalenderwochen) ** Sprache : Borland Turbo C++ ** Datum : 25.02.1996 ** Autor : Manfred Becker (Mani.Becker@web.de) \*******************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <dos.h> // // Konstannten... // #define GOOD 0 #define BAD -1 #define MONTAG 0 #define DIENSTAG 1 #define MITTWOCH 2 #define DONNERSTAG 3 #define FREITAG 4 #define SAMSTAG 5 #define SONNTAG 6 #define DY 0 // // Funktions-Prototypen... // int wochentag(const char *datum); int kalenderwoche(const char *datum, int &wjahr); int schalttag(const int jahr); int anzahl_tage_des_monats(const int monat, const int jahr); int anzahl_tage_des_jahres(const int jahr); int anzahl_wochen_des_jahres(const int jahr); // // Globale Variable... // char kalender[59][80]; //-------------------------------------------------------------- int main(int argc, char *argv[]) // Ausgabe eines Kalenders Als Uebergabeparameter kann eine // Jahreszahl zwischen 1582 und 9999 angegeben werden. Ansonsten // wird das aktuelle Jahr ausgegeben. //-------------------------------------------------------------- { int year = -1; if (argc>1) { // Auswertung der Uebergabeparameter... year = atoi(argv[1]); if (year<1582 || year>9999) { fprintf(stderr,"Fehler: Falsche Jahreszahl! Moegliche Jahreszahlen sind 1582 bis 9999."); exit (BAD); } } if (year<0) { // Ermittlung der aktuellen Jahreszahl... struct date d; getdate(&d); year = d.da_year; } int i,j,x,y,z; int kwoche,endwoche,m; int wt,wzy,wzx,tzy,tzx; int wof,tyo,txo,tag,endtag; int dummy; char jahr[5]; char datum[11]; char ww[3]; char tt[3]; // // Entwurf des Kalenders... // for (i=0; i<59; i++) { sprintf(kalender[i]," "); } sprintf(datum,"01.01.%4d",year); endwoche = anzahl_wochen_des_jahres(atoi(jahr)); for (m=1; m<13; m++) { // Alle Monate durchlaufen... sprintf(datum,"01.%2d.%4d",m,year); // Monatsanfang kwoche = kalenderwoche(datum, dummy); // 1. Kalenderwoche sprintf(ww,"%2d",kwoche); // im String ablegen wt = wochentag(datum); // 1. Wochentag wzy = (m-1) / 3 * 12 + DY+3; // Zeile der Woche wzx = ((m-1) % 3) * 23 + 7; // Spalte der Woche wof = 0; // Spalten-Offset tzy = (int)(m-1) / 3 * 12 + DY+5; // Zeile des Tages tzx = ((m-1) % 3) * 23 + 7; // Spalte des Tages tyo = wt; // Zeilen-Offset txo = 0; // Spalten-Offset tag = 1; // 1. Tag sprintf(tt,"%2d",tag); // im String ablegen endtag = anzahl_tage_des_monats(m,year);// letzter Tag do { // Alle Tage durchlaufen... kalender[wzy][wzx+wof+0] = ww[0]; // Kalenderwoche kalender[wzy][wzx+wof+1] = ww[1]; // einfuegen do { // Bis Sonntag durchlaufen... kalender[tzy+tyo][tzx+txo+0] = tt[0];// Tag kalender[tzy+tyo][tzx+txo+1] = tt[1];// einfuegen tag++; sprintf(tt,"%2d",tag); tyo++; if (tyo==7) { // weiter mit naechster Woche... tyo=0; txo+=4; wof+=4; kwoche++; sprintf(ww,"%2d",kwoche); } } while ((tyo!=0) && (tag<=endtag)); if ((m==1 || m==12) && (kwoche>endwoche)) { // Korrektur der ersten bzw. letzten Kalenderwoche... kwoche = 1; sprintf(ww,"%2d",kwoche); } } while (tag<=endtag); } // // Ausgabe des Kalenders... // for (i=0; i<59; i++) printf(" %s\n",kalender[i]); // // Das wars schon... // return GOOD; } // End of main() //------------------------------------------------------------- int wochentag(const char *datum) // Berechnet zu jedem Datum des Gregor. Kalenders den Wochentag // nach dem Verfahren des Geistlichen Zeller. // // Hinweis: Der Gregor. Kalender wurde 1582 von Papst // Gregor XIII eingefuehrt! // // 0=Montag, 1=Dienstag usw., //-------------------------------------------------------------- { int tag, monat, jahr, jr, jhdt, wt; char dat[11]; sprintf(dat,"%10s",datum); jahr = atoi(&dat[6]);dat[5] = '\0'; monat = atoi(&dat[3]);dat[2] = '\0'; tag = atoi(&dat[0]); if (monat>2) monat -= 2; else { monat += 10; jahr--; } jr = jahr % 100; jhdt = (int)(jahr/100); wt = ((13*monat-1)/5+jr/4+jhdt/4+jr+tag-2*jhdt)%7-1; if (wt<0) wt += 7; return wt; } // End of wochentag() //-------------------------------------------------------------- int kalenderwoche(const char *datum, int &kwjahr) // Berechnet zu jedem Datum des Gregor. Kalenders die Kalender- // woche. In der Variablen kwjahr wird das zugehoerige Kalender- // jahr geliefert. //-------------------------------------------------------------- { int tag, monat, jahr; int wt, startwoche, endwoche, tage, i; int anzahl_wochen, kwoche; char dat[11]; sprintf(dat,"%10s",datum); jahr = atoi(&dat[6]);dat[5] = '\0'; monat = atoi(&dat[3]);dat[2] = '\0'; tag = atoi(&dat[0]); sprintf(dat,"01.01.%4s",&datum[6]); wt = wochentag(dat); startwoche = 1; if (wt==SONNTAG || (wt==SAMSTAG && !schalttag(jahr-1))) startwoche = 52; if (wt==FREITAG || (wt==SAMSTAG && schalttag(jahr-1))) startwoche = 53; endwoche=anzahl_wochen_des_jahres(jahr); tage = 0; for (i=1; i<monat; i++) { tage += anzahl_tage_des_monats(i,jahr); } tage += tag; anzahl_wochen = (int)((tage+wt-1)/7); kwoche = startwoche+anzahl_wochen; kwjahr = jahr; // Korrekturen... if (kwoche>endwoche && anzahl_wochen==endwoche) { kwoche -= endwoche; if (kwoche==1) kwjahr = jahr+1; } if (kwoche>endwoche && anzahl_wochen>0) { kwoche = anzahl_wochen; kwjahr = jahr; } if (kwoche>=endwoche && anzahl_wochen==0) { kwjahr = jahr-1; } return kwoche; } // End of kalenderwoche() //-------------------------------------------------------------- int schalttag(const int jahr) // Berechnet zu jedem Jahr des Gregor. Kalenders den Schalttag //-------------------------------------------------------------- { int sTag = 0; if ( !(jahr % 4) && ((jahr % 100) || !(jahr % 400)) ) sTag = 1; return (sTag); } // End of schalttag() //-------------------------------------------------------------- int anzahl_tage_des_monats(const int monat, const int jahr) // Berechnet zu jedem Monat eines Jahres die Anzahl der Tage //-------------------------------------------------------------- { int anzahl_tage = 0; switch(monat) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: anzahl_tage = 31; break; case 4: case 6: case 9: case 11: anzahl_tage = 30; break; case 2: anzahl_tage = 28 + schalttag(jahr); break; } return (anzahl_tage); } // End of anzahl_tage_des_monats() //-------------------------------------------------------------- int anzahl_tage_des_jahres(const int jahr) // Berechnet zu jedem Jahr die Anzahl der Tage //-------------------------------------------------------------- { return (365+schalttag(jahr)); } // End of anzahl_tage_des_jahres() //-------------------------------------------------------------- int anzahl_wochen_des_jahres(const int jahr) // Berechnet zu jedem Jahr die Anzahl der Wochen //-------------------------------------------------------------- { int anzahl_wochen, wt; char datum[11]; sprintf(datum,"01.01.%4d",jahr); anzahl_wochen = 52; wt = wochentag(datum); if ((wt==DONNERSTAG) || ((wt==MITTWOCH) && (schalttag(jahr)))) anzahl_wochen++; return anzahl_wochen; } // End of anzahl_wochen_des_jahres()
Leider musste ich die Routine für das Zeichnen des Rahmens rauslöschen, damit ich den Quellcode posten konnte.
-
Hi,
hier findest du zwar "nur" ein Buch zu PHP4:
Webserver-Programmierung für Einsteiger
allerdings kostet es nichts
-
Hast du einen Service-Pack aufgespielt?
Was passiert wenn man die Link-Datei manuell (via Explorer) startet. Geht's dann?
Kannst du dein Programm nicht umschreiben, und die EXE.Datei direkt aufrufen anstelle der Link-Datei?
sonnst weiss ich auch nicht weiter
-
Hi,
versuch's mal mit dem FB:
SO_OBJECT_SEND bzw. SO_OBJECT_SEND_ASYNCHRON.
Das sollte eigentlich funktionieren.
Allerdings hab ich es selbst noch nicht zum Laufen gebracht.
Vielleicht klappt's ja bei dir. Falls ja, musst du mir unbedingt davon berichten...
-
-
Hi,
vor Monaten gab's wohl auch noch die Datei:
c:\New Desktop\Programm.lnk
Gibt's die heut auch noch?
Ciao,
Manfred
-
Hi Patrick,
um Werte aus einer INI-Datei abzurufen kannst du die Funktion GetPrivateProfileString() verwenden. Die Funktion liefert dir auch zurück, wieviele Zeichen gelesen wurden. Falls 0 gelesen wurde, dann erstell einfach die INI-Datei mit der Funktion WritePrivateProfileString().
char szSectionName[] = "YourSectionName"; char szKeyName[] = "YourKeyName"; char szDefaultValue[] = "YourValue"; char szFilename[] = "YourFilename.ini"; BOOL bRet; char szMyValue[128]; //INI-Daten lesen... bRet = GetPrivateProfileString(szSectionName, szKeyName, NULL, szMyValue, sizeof(szMyValue), szFilename); if (!bRet) { //Falls nicht lesbar, dann Default-Werte zuweisen //und INI-Datei erzeugen... sprintf(szMyValue,szDefaultValue); WritePrivateProfileString(szSectionName, szKeyName, szDefaultValue, szFilename); }
Im Beispiel wird eine einzige Variable im INI-File (das sich übrigens im Windows-Verzeichnis befindet) eingelesen. Solltest du mehr brauchen, ruf einfach die Funktionen mehrfach auf.
Ciao,
Manfred
-
genau!
Wenn du Batch-Dateien ohne Rücksprung starten willst lass einfach 'call' weg.
:viewer IXOS_Viewer_only.bat :enterprise IXOS_EnterpriseScan_inkl_Viewer.bat
Willst du aber den Rücksprung beibehalten, dann versuchs mal so::viewer call IXOS_Viewer_only.bat goto EXIT :enterprise call IXOS_EnterpriseScan_inkl_Viewer.bat goto EXIT :EXIT echo Ready...
Wenn die EXE-Dateien starten willst, und die DOS-Box soll verschwinden, dann verwende Anstelle von 'call' einfach 'start'
Ciao,
Manfred
-
-
Dass deine Klasse von CWnd abgeleitet ist bringt uns nicht weiter.
Du sagtest doch, dass du ein ActiveX-Element eingebunden hast?
Google doch mal mit dessen Namen. Vielleicht bekommst du dann den entscheidenden Hinweis...
Viel Glück
Manfred
-
Hi,
ist deine Browser-View-Klasse abgeleitet von CHtmlView?
Hier ein Beispiel:
class CMBrowseView : public CHtmlView { ... }
Falls ja, dann kannst du deren Class-Members verwenden (schau mal in der Hilfe nach)
Ciao...
Manfred
-
Hi Patrick,
denk dran, dass deine Struktur CString-Elemente enthalten. CString ist 'ne Klasse, und kein Datentyp! Wenn du also vor hast eine Instanzvariable der Klasse bereits beim Erstellen mit Werten zu füllen, dann brauchst du nen entsprechenden Konstruktor:
struct sField { CString Feld1; CString Feld2; CString Feld3; //Konstruktor der Struktur sField(CString f1,CString f2,CString f3) { Feld1=f1; Feld2=f2;Feld3=f3; }; };
Damit lässt sich dann folgendes tun:sField test = sField("1","2","3");
Beachte weiterhin, dass CStringArray ebenfalls eine Klasse ist! Man kann zwar auf die einzelnen Elemente im Array über die Indexierung zugreifen, aber Elemente (und dabei handelt es sich um CString-Elemente) hinzufügen geht mit der Memberfunktion Add() :CStringArray strArTest; strArTest.Add("1"); strArTest.Add("2"); strArTest.Add("3"); CString strValue = strArTest[0]; // Indexwerte 0..2 verwenden!
Ich hoffe, dass dir das weiterhilft...
(Eine Mögliche Lösung hat ja bereits Diablo999 geliefert)
Ciao
Manfred
IStream-Interface als Parameter in C# (eigtl. Delphi Interface)
in Delphi/RPG+CL/Sonstige
Geschrieben
Hi HuDeanY,
ich selbst hatte zwar unter C# noch nichts mit IStream's zu tun, jedoch auf meiner Lieblingsseite hab ich folgendes gefunden:
How to Pass Managed Objects As a Parameter of a Queued Component.
Ich hoffe das hilft dir weiter...